我已經問這是關於another問題的評論,並且在mongodb用戶上也發佈了question。到目前爲止沒有迴應,所以我正在求助於另一個問題。MongoDB嵌套數組查詢
的documentation狀態:
如果字段保持的陣列,則在操作員將$選擇 文檔其字段保存包含指定數組中相匹配的值的至少一個 元素的數組(例如, 等)
我使用:
mongod --version:
db version v2.2.2, pdfile version 4.5
Thu May 30 12:19:12 git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
mongo --version:
MongoDB shell version: 2.0.4
在MongoDB中殼:
db.nested.insert({'level1': {'level2': [['item00', 'item01'], ['item10', 'item11']]}})
這裏是一個要根據文檔的查詢工作的清單,結果他們生產:
爲什麼不這項工作?
> db.nested.findOne({'level1.level2.0': 'item00'})
null
爲什麼我需要$ all?
> db.nested.findOne({'level1.level2.0': {'$all': ['item00']}})
{
"_id" : ObjectId("51a7a4c0909dfd8872f52ed7"),
"level1" : {
"level2" : [
[
"item00",
"item01"
],
[
"item10",
"item11"
]
]
}
}
以下至少一項應該可以正常工作嗎?
> db.nested.findOne({'level1.level2.0': {'$in': ['item00']}})
null
> db.nested.findOne({'level1.level2': {'$in': ['item00']}})
null
任何想法?如果查詢語法不能像宣傳的那樣工作,我們正在考慮放棄MongoDB。
謝謝!
感謝您花時間回覆,但不幸的是,您的答案都不正確。在手冊的「Read」頁面中,搜索「以下操作將光標返回到bios集合中的所有文檔,其中數組字段contribs包含元素'UNIX':」在我的問題頂部附近的文檔鏈接中,你可以看到$ in應該在包含數組的字段上工作。最後,您的語句「$ all正在工作,因爲...」是錯誤的:字段中的所有值都不需要存在於查詢中,但查詢中的所有值都必須存在於文檔的字段中。 – dgorur
感謝您爲「$ all正在工作,因爲......」中的更正。所以你在說$ in應該適用於數組,而且文檔是這樣說的。現在我很感興趣。我會做一些實驗,看看我是否知道。你在這裏有一個非常有趣的問題! – AntonioOtero
我把我的發現放在另一個答案中,我希望它對你有用。 – AntonioOtero