MongoDB query notes

collection.find()
collection.findOne() //返回一条
  • 基础

无条件查询:

db.collection.find()
//SELECT * FROM tables;

(多)条件查询

db.collection.find({"key":"value"})

SELECT * FROM tables WHERE key='value';

条件操作符

  • $lt
  • $lte
  • $gt
  • $gte
  • $ne
  • $in 包含
  • $all 全部包含
  • $nin 不含
{"key":{"$lt":100}}
{"key":{"$in":[100,200]}}
  • $mod 余数
{"key":{"$mod":[10,1]}}

与或非

  • $or
  • $not
{"$or":[{"key1": "value1", "key2":"value2"}},{"key":{"$in":[100,200]}]}

其他

  • $where 用于复杂语句查询,不过他人评价效率较低,不推荐使用.

复杂的查询,$where当然是非常方便的,但效率低下。对于复杂查询,考虑的顺序应当是 正则 -> MapReduce -> $where

  • $slice 对包含数组的查询结果进行切片.
//document:
//{"key:["value1", "value2", "value3" ] }
db.collection.find({"key":{"$size":3}},{"key":{"$slice":1}})
//通过$size查询数组个数为3的数据,返回前1条.

this

db.collection.find({"$where":"this.key1>this.key2"})

js

$语句支持通过js函数返回值进行查询.
{"$where":"function () { return this.a == this.b}"}

$elemMatch

元素为数组,切数组的元素为K-V形式时使用.

{"key":{"$elemMatch":{"key2":"value"}}}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容