簡體   English   中英

MongoDB:在數組中查找元素

[英]MongoDB: Find an element in an array

我的MongoDB集合中有一個簡單的數組:

"_id": "5669b4930874f8d01f7676da", "cars": ["BMW", "Audi", "VW"]

我現在要檢查該文檔中是否包含“ Audi”。 我在這里已經閱讀了有關數組的所有問題,但它們都集中在內部對象的數組上,在這里情況並非如此。

db.collectionName.find({ cars: {$eq: "Audi"} })

不起作用(不返回任何文檔)。

編輯:這是我自己的愚蠢,請參閱下面有關最佳解決方案的評論。 因此,以上查詢始終有效。 好吧,正如他們所說的,問題總是出在鍵盤前面;-)

都沒有:

db.collectionName.find({ $elemMatch: { cars: "Audi" }})

它實際上導致以下錯誤消息:

error: {
"$err" : "Can't canonicalize query: BadValue unknown top level operator: $elemMatch",
"code" : 17287

要么:

db.collectionName.find({ cars: { $in: "Audi" }})

這導致以下錯誤:

error: {
"$err" : "Can't canonicalize query: BadValue $in needs an array",
"code" : 17287

通過MongoDB Shell在MongoDB 2.6.7版中進行了測試。 謝謝你的幫助!

您可以簡化:

db.collectionName.find({ cars: "Audi" })

應該工作完美。

db.collectionName.find({ cars: { $in: ["Audi"] }})

也可以工作,但是首先要簡單些。

這個查詢似乎對我有用:

 db.cars.find({cars: {$elemMatch:{$eq:"BMW"}} })

結果

{ "_id" : ObjectId("5669ca2ff0fbefa0650e5fb6"), "cars" : [ "Audi","BMW", "Honda" ] }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM