查找元素我有一個簡單的數組在我的MongoDB集合:MongoDB的:在一個陣列
"_id": "5669b4930874f8d01f7676da", "cars": ["BMW", "Audi", "VW"]
我現在要檢查,如果「奧迪」是文件內。我已經在SO上讀過關於數組的所有問題,但他們都將注意力集中在內部的對象上,這裏不是這種情況。
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版進行測試。謝謝你的幫助!
這是我的問題是愚蠢的。我實際上創建了這個汽車的例子,但在我的集合中,我用的是(在這裏使用相同的例子)搜索「福特」,這顯然不在數組中,因此我得到了0個文檔。謝謝,花了30分鐘試圖弄清楚爲什麼你的工作和我的不是。 – a4xrbj1
啊,它發生;-) –