一:find查询
1.查询全部 db.getCollection('document').find({})或者db.getCollection('document’').find()
2.部分查询 db.getCollection('document').find({"name":"value"})
3.键的筛选 键的筛选是查询时只返回自己感兴趣的键值,通过指定find的第二个参数来实现。这样可以节省传输的数据量,又能节省客户端解码文档的时间和内存消耗
db.getCollection('document').find({},{"name":1,"password":1}) 通过指定find的第二个参数实现键的筛选。指定键的值为1则返回,为0则被过滤掉。默认"_ID"键总是被返回,除非显式过滤({"_ID":0})
二:查询条件
1.比较查询 $lt,$lte,$gt,$gte,$ne对应<,<=,>,>=,!=
20 <= age <= 30 db.collection.find({"age":{"$gte":"20","$lte":"30"}}),此处age要和集合中的键值类型相同,否则可能查不出来 db.collection.find({"age":{"$gte":20,"$lte":30}}),查询和更新文档时,以$开头的键处的位置不同。条件句,比如$gte是内层文档的键;修改器如$inc是外层文档的键
2.关联查询
$in用于查询一个键的多个值,$nin将返回与筛选数组中所有条件都不匹配的文档。将$in与$not组合可以实现$nin的效果 db.collection.find({"age":{"$in":[20,25,26]}}) age为20,26的文档 db.collection.find({"age":{"$nin":"[20,26]"}})age不为20,26,26的文档 db.collection.find({"age":{"$not":{"$in":[20,26]}}}) 同上 注:$in和$nin只能对单个键做or *** 作。如果需要对多个键进行or *** 作,需要使用$or,如:{"$or":[{条件1},{条件2}]} db.collection.find({"$or":[{"in":[20,26]},{"name":"xiaohei"}]})
三:特定类型的查询
1.null查询
null不仅能匹配自身还能匹配键不存在的文档
2.正则表达式
db.collection.find({"name":/^user/})匹配以user开头的所有文档 mongodb能为前缀型的正则表达式建立索引,所以此类型的查询效率较高
3.数组查询
$all通过多个元素匹配数组 db.food.find({fruit:{$all:["banana"]}})匹配含有banana的数组 db.food.find({"fruit.2":"peach"})查询数组指定位置的元素可以使用key.index的语法,下标从0开始。 $size查询指定长度的数组 db.food.find({"fruit":{"$size":3}}) $slice返回数组的一个子集合 db.collection.find({},{"ListKey":{"$slice":1}})返回数组前一个元素 db.collection.find({},{"ListKey":{"$slice":-1}})返回数组最后一个元素 db.collection.find({},{"ListKey":{"$slice":[1,2]}})返回数组下标为1到2的元素 $slice值为x则返回前x个元素,为-x则返回后x元素,为[x,y]则x表示偏移值,y表示返回的元素个数,即返回第x+1到第x+y个元素,如果x+y超出数组长度,则返回地x个元素后所有的元素
4.内嵌文档查询
db.collection.find({"mapParams":{"key1":"value1","key2":"value2"}}) db.collection.find({"mapParams.key1":"value1","mapParams.key2":"value2"})
四:$where查询
$where查询是MongoDB的高级查询部分,可以执行任意JavaScript作为查询的一部分,是其他查询方式的一个补充 $where查询需要将每个文档从BSON转换为JavaScript对象,然后通过$where的表达式来运行,该过程不能利用索引,所以查询速度较常规查询慢很多。如果必须使用时,可以将常规查询作为前置过滤,能够利用索引的话可以使用索引 根据非$where子句进行过滤,最后使用$where对结果进行调优。另一种方式采用映射化简-MapReduce.
五、游标
游标是很有用的东西,MongoDB数据库使用游标来返回find的执行结果。客户端使用游标可以对最终结果进行有效的控制,比如分页,排序。 (待补充)
总结 以上是内存溢出为你收集整理的MongoDB查询全部内容,希望文章能够帮你解决MongoDB查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)