[英]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.