MongoDB   发布时间:2022-05-23  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MongoDB查询大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一: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="">ollection.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转换@R_618_9478@Script对象,然后通过$where的表达式来运行,该过程不能利用索引,所以查询速度较常规查询慢很多。如果必须使用时,可以将常规查询作为前置过滤,能够利用索引的话可以使用索引         根据非$where子句进行过滤,最后使用$where对结果进行调优。另一种方式采用映射化简-MapReduce.

五、游标

   游标是很有用的东西,MongoDB数据库使用游标来返回find的执行结果。客户端使用游标可以对最终结果进行有效的控制,比如分页,排序。
   (待补充)

大佬总结

以上是大佬教程为你收集整理的MongoDB查询全部内容,希望文章能够帮你解决MongoDB查询所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: