mongoose 查询操作

查询单独一节,是因为内容相对多,无论哪个数据库系统,查询总是功能最多的,在各种方案中,想做一个接口,通过接口操作各种储存设备,我也有过这种想法,相信很多人都想过,这个实践过程中,最难的不是增删改的接口,而是查询操作接口,因为太千变万化了。

find 例子

User
.find({})
.where('name.last').equals('Ghost')
.where('age').gt(17).lt(66)
.where('likes').in(['vaporizing', 'talking'])
.limit(10)
.sort('-age')
.select('name age')
.exec(callback);
  • find 表示找什么,如果是 {} 就表示无限制

  • where 细化查询条件,.where('name.last').equals('Ghost') 表示 name.last 要等于 Ghost。where('likes').in(['vaporizing', 'talking']) 表示 linkes 的值必须是 vaporizing 或 talking。.where('age').gt(17).lt(66) 表示age要大于17小于66。

  • limit(10) 返回结果的数量要 >= 10

  • sort(‘-age’) 返回的结果数组根据age降序排列

  • select(‘name age’) 返回数据中,只包括 name 和 age字段。

  • exec(callback) 执行这次查询,callback(err, result_array)

findOne

findOne可查询一个,所以不需要query模式,下面是个例子:

User.findOne({ 'name.last': 'Ghost' }, 'name age', function (err, user) {
… … 
})

这个代码的意思是,查询 name.last 为 Ghost 的User,返回的对象只包括 name 和 age字段信息。

可参看官网 http://mongoosejs.com/