在mongodb的查询中可以通过使用如下操作符进行深度查询
1.条件操作符
$gt $gte : > >= {"age":{"$gt":18}}
$lt $lte: < <=
$or : 或 {"$or":[{"name":"jack"},{"name":"mike"}]}
$in/$nin : 在集合中/不在集合中 {"age":{"$in":[18,20]}}
$and: 且 用法同$or
$not: 非 {"name":{"$not":"jack"}}
$mod: 取模 {"age":{"$mod":[5,1]}} 选出除以5余数得1的结果
$exists: 查询时附加该键值是否存在 {"name":{"$exists":true}}
$all: 查询的集合包含条件中全部的内容,但是是无序的 {"name":{"$all":["jack","mike"]}} 中招的可能是 name:["mike","jack","mary"] ,也有 name:["miky","mike","jack"]
$size: 查询出限定属性下长度值为给出的size的数组 {"list":{"$size":2}}
$slice: 取值正负数字,返回多少条文档 {"list":{"$slice":2}}
$elemMatch : 在查询数组时限定取值条件 {"list":{"$elemMatch":{"$gt":10,"$lt":20}}} 如果不加 $elemMatch 则会匹配到 list:[5,25] 因为5<20 25>10 只能应用在数组类型的属性中
$where : 会执行一段js {"$where":function(){return ...}}
除了操作符之外,还有游标操作辅助查询
2.游标操作
next: 遍历游标,并将其取出游标,在shell中执行一次后默认后面全部执行,最终会导致游标结果集为空
hasNext: 检查游标是否为空
forEach: 遍历,和js数组中的forEach功效一致
limit: 取返回结果的前n个,不足n个全部返回
skip: 跳过返回结果的前n个
sort: 根据返回结果中的某一字段进行排序 1 升序 -1 降序
一些总结
要避免使用skip跳过大量数据