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

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部