3
我有以下結構的文檔:Mongodb:找到至少有一個數組元素匹配的文檔?
[{
"items": [
{
"sent_to_lab": 123,
"received_from_lab": 456,
},
{
"sent_to_lab": 123,
},
]
}
... more orders ...
]
我想取其中至少一個項下列條件匹配的所有訂單:
'$and': [
{'items.sent_to_lab': {'$exists': True}},
{'items.received_from_lab': {'$exists': False}},
]
因此,在這種情況下,我會喜歡返回上述項目,因爲至少有一個items
數組元素符合我的標準。
我該如何在mongo中做到這一點?
這非常有幫助,謝謝!在這種情況下,我確實需要整個文檔。但似乎我現有的查詢確保數組中的* all *元素與條件匹配,而不是實際上「一個或多個」 – poundifdef 2013-03-02 03:26:30
,這不是數組在MongoDB中的工作方式。您的查詢表示返回任何子文檔已發送到任何文檔,並且任何子文檔都沒有received_from_lab。這意味着您的查詢將返回包含兩個子文檔的文檔,一個是已發送和已接收的文檔,另一個是兩個都沒有(!)elemMatch將它們合併,以便它們應用於相同的子文檔,這正是我理解您的用例的原因。 – 2013-03-02 12:45:55
經過一番搗鼓之後,我發現你是對的,'$ elemMatch'正是我所期待的。非常感謝它。 – poundifdef 2013-03-04 19:42:12