日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java mongo 查询数组_MongoDB查询(数组、内嵌文档)

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java mongo 查询数组_MongoDB查询(数组、内嵌文档) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

我們上一篇介紹了db.collection.find()可以實現根據條件查詢和指定使用投影運算符返回的字段省略此參數返回匹配文檔中的所有字段,我們今天介紹了對數組和內嵌文檔的查詢操作,尤其是對$elemMatch 同樣可以用在find方法的第二個參數來限制返回數組內的元素,只返回我們需要的文檔的介紹。我們經常在查詢條件查詢內嵌文檔數組時,只需要返回主文檔并返回內嵌文檔數組中我們只需要的值,而不是把內嵌文檔的數組都返回。

二、對數組根據條件查詢

$all、$size、$slice、$elemMatch

(1)$all查找數組中包含指定的值的文檔

語法:

{ field:{ $all: [ , ... ]}

例子:

db.orders.find({"books":{$all:["java","mongo"]}})

查找books包含java、mongo的文檔數據

(2)$size 查找數組大小等于指定值的文檔

語法:

{field:?{$size:?number?}?}

例子:

>db.orders.find({"books":{$size:2}})

(3)$slice查詢數組中指定返回元素的個數

語法:

>db.collect.find({},{field:{$slice:?number?}})

number 說明:

為正數表示返回前面指定的值的個數:例如1 返回數組第一個

為負數表示返回倒數指定的值的個數:例如-1返回數組倒數第一個

例子:

>db.orders.find({"onumber":{$in:["008","009"]}},{books:{$slice:1}})

1)$slice可以查詢數組中第幾個到第幾個

語法:

>db.collect.find({},{field:{$slice:[?number1,?number2]?}})

跳過數組的number1個位置然后返回number2個數

number1說明:

為正數表示跳到指定值的數組個數:例如2 跳到數組第3個

為負數表示跳到指定值的數組倒數個數:例如-2跳到到數組倒數第3個

例子:

>db.orders.find({"onumber":{$in:["008","009"]}},{books:{$slice:[1,1]}})

跳過books數組第一個元素,現在到數組第二個元素,并返回1個元素

三、對數組內嵌文檔查詢

我們先保存數據

db.?orders.insert([

{

"onumber"?:?"001",

"date"?:?"2015-07-02",

"cname"?:?"zcy1",

"items"?:[?{

"ino"?:?"001",

"quantity"?:2,

"price"?:?4.0

},{

"ino"?:?"002",

"quantity"?:?4,

"price"?:?6.0

}

]

},{

"onumber"?:?"002",

"date"?:?"2015-07-02",

"cname"?:?"zcy2",

"items"?:[?{

"ino"?:?"001",

"quantity"?:2,

"price"?:?4.0

},{

"ino"?:?"002",

"quantity"?:6,

"price"?:?6.0

}

]

}

])

(1)$elemMatch 文檔包含有一個元素是數組,那么$elemMatch可以匹配內數組內的元素并返回文檔數據

語法:

>{field:{$elemMatch:{?field1:value1,?field2:value2,………}}}

例子:

>db.orders.find({"items":{$elemMatch:{"quantity":2}}})

返回quantity為2的文檔

也可以這樣查詢db.orders.find({"items.quantity":2})

(2) $elemMatch可以帶多個查詢條件

例子:

>db.orders.find({"items":{$elemMatch:{"quantity":4,"ino":"002"}}})

我們查詢數組中的quantity等于4并且ino等于002,但是我們就想返回數組中的quantity等于4并且ino等于002的這個文檔,并不想把ino等于001等這些無關的文檔返回。

(3)$elemMatch 同樣可以用在find方法的第二個參數來限制返回數組內的元素,只返回我們需要的文檔

例子:

db.orders.find({"onumber":"001"},{"items":{$elemMatch:{"quantity":4,"ino":"002"}},"cname":1,"date":1,"onumber":1})

我們只返回quantity等于4并且ino等于002的文檔,無關的文檔沒有返回,方便我們處理數據,這樣也可以節省傳輸數據量,減少了內存消耗,提高了性能,在數據大時,性能很明顯的。

總結

以上是生活随笔為你收集整理的java mongo 查询数组_MongoDB查询(数组、内嵌文档)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人的天堂黄色 | 日日摸夜夜爽 | 福利二区三区 | 18av在线播放 | 欧美1234区 | 日韩电影在线观看中文字幕 | 涩涩在线播放 | 91激情捆绑调教喷水 | av女星全部名单 | 超碰69 | 成人性生生活性生交3 | 国产高清免费视频 | 午夜久久久久 | 欧美浪妇xxxx高跟鞋交 | 中文字幕欧美人妻精品 | 色视频网站在线观看 | 日韩成人在线影院 | 亚洲第十页 | 亚洲成人日韩在线 | 操校花视频 | 国产嘿咻| 成人国产精品视频 | 美女爆乳18禁www久久久久久 | 色香五月 | 日本精品99| 欧美在线视频免费 | 日本性生活一级片 | 国产露出视频 | 色呦呦国产精品 | 熟妇高潮一区二区高潮 | 国产做爰全过程免费视频 | 第一次破处视频 | 精品人妻一区二区三区四区五区 | aa丁香综合激情 | 一区二区传媒有限公司 | 夜夜爱视频 | 99久久久无码国产精品6 | 天天干天天操天天射 | 国产艳妇疯狂做爰视频 | 亚洲国产91| 亚洲天堂美女视频 | 欧美国产日韩精品 | 久久大伊人 | 91成人在线观看喷潮 | 午夜特级毛片 | 日本国产欧美 | 日韩avwww | 国产自产在线视频 | 亚洲爱视频 | 美乳在线播放 | 日韩综合在线 | 日韩欧美视频免费在线观看 | 日本爽爽爽| 伊人蕉久影院 | 欧美成人精精品一区二区频 | 午夜小视频在线播放 | 人妻互换一二三区激情视频 | 视频一二区 | 欧美videos另类精品 | 欧美性猛交乱大交xxxx | 国产调教打屁股xxxx网站 | 国产大片91| 18禁肉肉无遮挡无码网站 | 亚洲av无码国产精品色午夜 | 最新国产毛片 | 亚洲精品一区二区三区四区五区 | 日韩精品大片 | 制服丝袜第一页在线观看 | 久久久三区| 成年人免费在线观看 | 日本久久爱 | 天天操bb | 日韩网站在线观看 | 韩日视频一区 | 一区二区三区在线观看视频 | 日韩图片一区 | 日本亚洲一区二区三区 | 激情导航| 亚洲综合一二三 | 亚洲av无码国产综合专区 | 一亲二脱三插 | 在线观看国产网站 | 欧美丰满老妇熟乱xxxxyyy | 中文字幕视频在线观看 | 在线观看第一页 | 亚洲日本国产 | 91黄色在线视频 | 538精品一线 | 国产精品毛片久久久久久 | mm1313亚洲国产精品美女 | 亚洲一级黄色大片 | 手机天堂av | 国产丝袜第一页 | 亚洲色图 一区二区 | 国产高潮又爽又无遮挡又免费 | 91精品国产色综合久久不卡蜜臀 | 香蕉视频91 | 超碰在线进入 | 亚洲成人福利视频 |