MongoDB查询操作有哪些情况,具体是怎样的?
Admin 2022-11-21 群英技术资讯 940 次浏览
这篇文章主要讲解了“MongoDB查询操作有哪些情况,具体是怎样的?”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。MongoDB 查询操作的实例详解
使用find或findOne进行查询。并可以进行范围查询、数据集查询、不等式查询,以及其他的一些查询。
查询将会返回DBcursor 游标只有在你需要的时候返回文档
针对游标返回的文档(结果集) 进行操作 例如:忽略一定数量的结果,或者返回结果的数量,以及对结果的排序。
1.指定需要返回的键
有时候仅仅对文档的某几个键值感兴趣,可以屏蔽返回的不感兴趣的键值,返回感兴趣的键值
mongos> db.blog.find({},{“name”:1})
{ “_id” : ObjectId(“5659836e73c8340448fa470e”) }
{ “_id” : ObjectId(“565e5c0e73c8340448fa470f”) }
{ “_id” : ObjectId(“565f998e73c8340448fa4710”) }
{ “_id” : 1, “name” : “zmkzmkzmkzmkzmk” }
{ “_id” : 2, “name” : “zmkzmkzmkzmkzmk” }
{ “_id” : 3, “name” : “zmkzmkzmkzmkzmk” }
{ “_id” : ObjectId(“566004d173c8340448fa4712”), “name” : “zmk” }
可以这样:
mongos> db.blog.find({},{“name”:1,”_id”:0})
{ “name” : “zmkzmkzmkzmkzmk” }
{ “name” : “zmkzmkzmkzmkzmk” }
{ “name” : “zmkzmkzmkzmkzmk” }
{ “name” : “zmk” }
指定返回的键值,是查询结果更高效。此接口可用于条件查询,方便结果处理。
2.查询条件
比较操作符
"$lt"、"$lte"、“$gt”,“$gte” 分别对应 <,<=,>,>=。
小贴士:在mongodb shell中定义方法的大概格式:
mongos> var insertName=function(){
… for(var i=0;i<10;i++){
… db.blog.insert({“_id”:1,”name”:”zmk”+i})
… }
… }
mongos> insertName()
效果:
mongos> db.blog.find()
{ “_id” : 1, “name” : “zmk0” }
{ “_id” : 0, “name” : “zmk0” }
{ “_id” : 2, “name” : “zmk2” }
{ “_id” : 3, “name” : “zmk3” }
{ “_id” : 4, “name” : “zmk4” }
{ “_id” : 5, “name” : “zmk5” }
{ “_id” : 6, “name” : “zmk6” }
{ “_id” : 7, “name” : “zmk7” }
{ “_id” : 8, “name” : “zmk8” }
{ “_id” : 9, “name” : “zmk9” }
观察下面的效果,find可以使用“$lt”<来查询文件插入的时间
mongos> db.blog.insert({“_id”:10,”time”:new Date()})
WriteResult({ “nInserted” : 1 })
mongos> db.blog.find({“time”:{“$lt”:new Date()}})
{ “_id” : 10, “time” : ISODate(“2015-12-05T12:08:53.469Z”) }
3.查询数组
1.$all
应用于多个元素匹配数组,且并无顺序。
mongos> db.blog.insert({“_id”:1,”fruit”:[“apple”,”banana”,”peach”]})
WriteResult({ “nInserted” : 1 })
mongos> db.blog.insert({“_id”:2,”fruit”:[“apple”,”kumquat”,”orange”]})
WriteResult({ “nInserted” : 1 })
mongos> db.blog.insert({“_id”:3,”fruit”:[“cherry”,”banana”,”apple”]})
WriteResult({ “nInserted” : 1 })
mongos> db.blog.find({“fruit”:{$all:[“apple”,”banana”]}})
{ “_id” : 1, “fruit” : [ “apple”, “banana”, “peach” ] }
{ “_id” : 3, “fruit” : [ “cherry”, “banana”, “apple” ] }
对数组进行精确匹配,可以使用key.index语法指定下标
mongos> db.blog.find({“fruit.2”:”peach”})
{ “_id” : 1, “fruit” : [ “apple”, “banana”, “peach” ] }
2.$size
查询特定长度的数组。
mongos> db.blog.find({“fruit”:{$size:3}})
{ “_id” : 1, “fruit” : [ “apple”, “banana”, “peach” ] }
{ “_id” : 2, “fruit” : [ “apple”, “kumquat”, “orange” ] }
{ “_id” : 3, “fruit” : [ “cherry”, “banana”, “apple” ] }
可以再存有数组的文档中添加size键,每一次向指定数组中添加元素,同时增加“size”的值,自增操作非常快,对性能不影响。
3.slice
可以返回某个键匹配的数组元素的一个子集
mongos> db.blog.find({“fruit”:{size:3}},{"fruit":{"slice”:-2}})
{ “_id” : 2, “fruit” : [ “kumquat”, “orange” ] }
{ “_id” : 3, “fruit” : [ “banana”, “apple” ] }
4.查询内嵌文档
点语法即可
mongos>db.people.find({“name.first”:”Joe”,”name.last”:”Schmoe”})
要正确的指定一组元素,而不必指定每个键,则需要使用$elemMatch 用来在查询条件中不非指定匹配数组中的单个内嵌文档。
db.blog.find({“comments”:{“$elemMatch”:
{“author”:”joe”,”score”:{“$gte”:5}}}})
5.limit、skip和sort
三个方法可以组合进行分页.
比如你有一个在线商店,有人搜索mp3,若想每页返回50个结果,而且按照价格从高到低升序排列。
db.stock.find({“des”:”mp3”}).limit(50).sort({“price”:-1})
db.stock.find({“des”:”mp3”}).skip(50).limit(50).sort({“price”:-1})
……
然而略过太多会导致性能问题。
解决方法:尽量避免使用skip略过大量结果。
var page1=db.stock.find({“des”:”mp3”}).limit(50).sort({“price”:-1})
var lastest=null;//解决方法,将游标最后一个文档记录下来,成为第二次查询的条件的一部分
while(page1.hasNext()){
lastest=page1.next();
display(lastest);
}
var page2=db.stock.find({“des”:”mp3”},{“price”:{$gt:lastest.price}}).limit(50).sort({“price”:-1})
……
随机选取文档
正确方法是在插入文档时插入一个随机值的键,然后按照普通查询进行find()即可。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
下面这篇文章主要来给大家说说看“mongodb同库联表怎么进行查询”的内容,对这方面比较感兴趣的朋友可以前来参考下,希望小编整理的内容能帮助到你。
MongoDB 全文检索 全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。 这个过程类似于通过字典中的检索字表查字的过程。 MongoDB 从 2.4 版本开始支持全文检索,目前支持15种语言的全文索引。 danish dutch english finnish french german hungari..
Node.js 连接 MongoDB MongoDB是一种文档导向数据库管理系统,由C++撰写而成。 本章节我们将为大家介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作。 如果你还没有 MongoDB 的基本知识,可以参考我们的教程:MongoDB 教程。 安装驱动 本教程使用了淘宝定制的 cnpm 命令进行安装: $ cnpm install mongodb 接下来我们来实现增删改查功能。 创建数据库 ..
下面小编就为大家带来一篇基于MongoDB数据库索引构建情况全面分析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这篇文章主要给大家介绍了关于CentOS 7系统下SELinux阻止MongoDB启动问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008