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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

《MongoDB入门教程》第11篇 数组运算符

發(fā)布時(shí)間:2024/3/26 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《MongoDB入门教程》第11篇 数组运算符 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文將會(huì)介紹 MongoDB 中查找數(shù)組元素相關(guān)的運(yùn)算符,包括 $size、$all 以及 $elemMatch。

$size 運(yùn)算符

$size 是一個(gè)數(shù)組查詢運(yùn)算符,可以判斷文檔的字段是否包含指定數(shù)量的元素。

$size 運(yùn)算符的語(yǔ)法如下:

{ array_field: {$size: element_count} }

其中,array_field 是字段名,element_count 表示該字段包含的元素?cái)?shù)量。

接下來(lái)的示例將會(huì)使用以下集合:

db.products.insertMany([{ "_id" : 1, "name" : "xPhone", "price" : 799, "releaseDate" : ISODate("2011-05-14T00:00:00Z"), "spec" : { "ram" : 4, "screen" : 6.5, "cpu" : 2.66 }, "color" : [ "white", "black" ], "storage" : [ 64, 128, 256 ] },{ "_id" : 2, "name" : "xTablet", "price" : 899, "releaseDate" : ISODate("2011-09-01T00:00:00Z"), "spec" : { "ram" : 16, "screen" : 9.5, "cpu" : 3.66 }, "color" : [ "white", "black", "purple" ], "storage" : [ 128, 256, 512 ] },{ "_id" : 3, "name" : "SmartTablet", "price" : 899, "releaseDate" : ISODate("2015-01-14T00:00:00Z"), "spec" : { "ram" : 12, "screen" : 9.7, "cpu" : 3.66 }, "color" : [ "blue" ], "storage" : [ 16, 64, 128 ] },{ "_id" : 4, "name" : "SmartPad", "price" : 699, "releaseDate" : ISODate("2020-05-14T00:00:00Z"), "spec" : { "ram" : 8, "screen" : 9.7, "cpu" : 1.66 }, "color" : [ "white", "orange", "gold", "gray" ], "storage" : [ 128, 256, 1024 ] },{ "_id" : 5, "name" : "SmartPhone", "price" : 599, "releaseDate" : ISODate("2022-09-14T00:00:00Z"), "spec" : { "ram" : 4, "screen" : 9.7, "cpu" : 1.66 }, "color" : [ "white", "orange", "gold", "gray" ], "storage" : [ 128, 256 ] },{ "_id" : 6, "name" : "xWidget", "spec" : { "ram" : 64, "screen" : 9.7, "cpu" : 3.66 }, "color" : [ "black" ], "storage" : [ 1024 ] } ])

以下示例使用 $size 運(yùn)算符查找數(shù)組字段 color 包含兩個(gè)元素的文檔:

db.products.find({color: {$size: 2} }, {name: 1,color: 1 })

查詢返回的文檔如下:

{ "_id" : 1, "color" : [ "white", "black" ], "name" : "xPhone" }

以下示例同時(shí)使用了 $size 運(yùn)算符和 $or 運(yùn)算符查找數(shù)組字段 color 包含一個(gè)或者兩個(gè)元素的文檔:

db.products.find({$or: [{color: {$size: 1}},{color: {$size: 2}}] }, {name: 1,color: 1 })

查詢返回的結(jié)果如下:

{ "_id" : 1, "color" : [ "white", "black" ], "name" : "xPhone" } { "_id" : 3, "color" : [ "blue" ], "name" : "SmartTablet" }

$all 運(yùn)算符

$all 是一個(gè)數(shù)組查詢運(yùn)算符,可以判斷文檔的字段是否包含指定的所有元素。

$all 運(yùn)算符的語(yǔ)法如下:

{ <arrayField>: { $all: [element1, element2, ...]} }

如果 $all 運(yùn)算符后面的數(shù)組為空,不會(huì)匹配任何文檔。

如果 $all 運(yùn)算符只有一個(gè)元素,應(yīng)該使用表達(dá)式,而不是數(shù)組:

{ <arrayField>: element1 }

$all 運(yùn)算符可以使用等價(jià)的 $and 運(yùn)算符實(shí)現(xiàn):

{ $and: [{ arrayField: element1}, {arrayField: element2} ]}

以下示例使用 $all 運(yùn)算符查找 color 字段同時(shí)包含“black”和“white”兩個(gè)元素的文檔:

db.products.find({color: {$all: ["black", "white"]} }, {name: 1,color: 1 })

查詢返回的結(jié)果如下:

{ "_id" : 1, "name" : "xPhone", "color" : [ "white", "black" ] } { "_id" : 2, "name" : "xTablet", "color" : [ "white", "black", "purple" ] }

上面的示例也可以使用 $and 運(yùn)算符實(shí)現(xiàn):

db.products.find({$and: [{color: "black"},{color: "white"}] }, {name: 1,color: 1 })

$elemMatch 運(yùn)算符

$elemMatch 也是一個(gè)數(shù)組查詢運(yùn)算符,可以判斷文檔是否包含指定數(shù)組字段,并且該字段至少包含一個(gè)滿足條件的元素。

$elemMatch 運(yùn)算符的語(yǔ)法如下:

{ <arrayField>: {$elemMatch: { <query1>, <query2>, ...} } }

注意,$elemMatch 運(yùn)算符不支持 $where 表達(dá)式或者 $text 查詢表達(dá)式。

以下示例使用 $elemMatch 運(yùn)算符查詢 products 集合中的文檔:

db.products.find({storage: {$elemMatch: {$lt: 128}} }, {name: 1,storage: 1 });

查詢返回了數(shù)組字段 storage 中至少包含一個(gè)小于 128 的元素的文檔:

[{ _id: 1, name: 'xPhone', storage: [ 64, 128, 256 ] },{ _id: 3, name: 'SmartTablet', storage: [ 16, 64, 128 ] } ]

總結(jié)

以上是生活随笔為你收集整理的《MongoDB入门教程》第11篇 数组运算符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。