mongoose的使用
mongoose的一些高级用法:
1 populate(中文:移民)的用法
在mongodb中没有关联查询这一说,因此必须就要先设置好相关联的对象
比如,我们在ZonePrice中就就先定义一个Zone对象
var ZonePriceSchema = new mongoose.Schema({ zone:{type:ObjectId, ref:'Zone'}, time: String, //时间 price: Number, //价格 district:String, //区域})
而后使用populate把相关联的zone查询出来
ZonePrice.find({}) .populate({ path:'zone', match:{priceRate:{$gt:0}}, options:{ limit:pageSize, skip:(pageNum-1)*pageSize }})
2 复杂查询
以下是一个复杂查询,基本包括了所有的查询用法
Person .find({ occupation: /host/ }) .where('name.last').equals('Ghost') // Person.name.last是Ghost .where('age').gt(17).lt(66) // 17 < Person.age <66 .where('likes').in(['vaporizing', 'talking'])//likes是vaporizing或者talking .limit(10) //限制10条记录 .sort('-occupation') //根据occupation的倒序排 .select('name occupation') //选择name和occupation字段 .exec(callback);
3 模糊匹配
有时候在项目中需要搜索功能,而搜索功能的实现必须用模糊匹配,这个时候可以使用or进行多字段匹配,但速度比较慢,大系统最好使用专业的搜索方法
or表示在数组里的条件满足一个即可,$regex表示一个正则表达式,匹配了key,同时,加入了$option的$i表示忽略大小写
Job.find({ $or: [ {'description': {'$regex': key, $options: '$i'}}, {'city': {'$regex': key, $options: '$i'}}, {'name': {'$regex': key, $options: '$i'}}] }) .populate('JobType', 'name') .exec(function (err, jobs) { if (err) { callback(err); } else { callback(null, jobs); } })
关键字:mongodb, mongoose, options, populate
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!