在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MongoDB 查询操作的实例详解

106次阅读
没有评论

共计 3165 个字符,预计需要花费 8 分钟才能阅读完成。

自动写代码机器人,免费开通

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 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() 即可。

  感谢阅读,如有疑问请留言或者到本站社区交流讨论,谢谢大家对本站的支持!

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计3165字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 无套内射极品少妇chinese | 国产精品视频全国免费观看 | 亚洲区小说区激情区图片区 | a级黄色毛片视频 | 中国午夜伦理片伦理片 | 四虎影视永久地址www成人 | 日本三级片网站 | 中文字幕亚洲欧美日韩2019 | 亚洲av日韩av永久无码下载 | 一区二区三区在线 | 网站 | 亚洲熟妇自偷自拍另欧美 | 亚洲中文字幕无码久久2017 | 亚洲国产日韩在线人高清 | 舒淇一级毛片免费看 | 九九综合九色综合网站 | 四虎免费久久影院 | 久久久久久久尹人综合网亚洲 | 欧美激欧美啪啪片免费看 | 国产精品久久久久尤物 | 天天摸天天添人人澡 | 永久在线免费 | 亚洲av无码一区东京热 | 欧美高清不卡 | 久草亚洲视频 | 久久精品中文无码资源站 | 欧美国产综合日韩一区二区 | 顶级欧美熟妇高潮xxxxx | 国产精品bdsm在线调教 | 国内精品线在线观看 | 日本人乱人乱亲乱色视频观看 | 国产成人ae在线观看网站站 | 久久国产精品成人片免费 | 波多野结衣爽到高潮大喷 | a级国产乱理伦片在线观看 a级国产乱理论片在线观看 | 加勒比色综合久久久久久久久 | 国产一级高清视频在线 | 玩弄放荡人妻少妇系列视频 | 国产在线视频99 | 国产91在线 | 亚洲 | 男女一级特黄a大片 | 爱情岛论坛网址永久首页 |