MongoDB查询

MongoDB查询,第1张

概述一:find查询 1.查询全部 db.getCollection('document').find({})或者db.getCollection('document’').find() 2.部分查询 db.getCollection('document').find({"name":"value"}) 3.键的筛选 键的筛选是查询时只返回自己感兴趣的键值,通过指定find的第二个参数来实现。这样可以节省传输的数据量,又能节省客户端解码文档...

一: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查询所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1154822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存