考慮以下文件:
{
"_id" : "ID_01",
"code" : ["001", "002", "003"],
"Others" : "544554"
}
我通過這個MongoDB doc for elemmatch-query & elemmatch-projection去了,但沒能弄明白如何使用相同的上述文件。
誰能告訴我如何使用$elemMatch
作爲域代碼?
考慮以下文件:
{
"_id" : "ID_01",
"code" : ["001", "002", "003"],
"Others" : "544554"
}
我通過這個MongoDB doc for elemmatch-query & elemmatch-projection去了,但沒能弄明白如何使用相同的上述文件。
誰能告訴我如何使用$elemMatch
作爲域代碼?
由於$in
可用於在特定字段內搜索值(或多個值),因此您會希望在此情況下使用$in
運算符而不是$elemMatch
。 $ in需要一個值列表作爲數組傳遞。此外,對於您的情況,它會查找單個值,或通過搜索一組值。整個匹配文檔被返回。
例如,你可能會使用這樣的:
db.mycodes.find({ code: { $in: ["001"] } })
這可以簡化爲僅僅是:
db.mycodes.find({ code: "001" })
如MongoDB的將查找的數組,像上面一根火柴( "001"
)。
或者,如果你要搜索"001"
或"002"
:
db.mycodes.find({ code: { $in: ["001", "002"] } })
$ in只接受數組:「無法canonicalize查詢:BadValue $需要一個數組」 – 2015-01-14 10:07:47
@RaxWunter - 正確。不確定爲什麼我這樣做,因爲我確實證實了它的行爲方式從2.6開始。謝謝! (這是從2013年4月開始,所以控制檯或數據庫中的內容可能會發生變化......不知道發生了什麼:)) – WiredPrairie 2015-01-14 14:05:35
如果你只是尋找匹配包含給定值的陣列中的所有文件,你可以指定對該數組的引用的值,例如
db.mycodes.find({ code: '001' })
這因此會回報你,在他們code
陣列包含'001'
所有文件
就是這樣!謝謝。 – thomas 2014-12-09 23:37:09
是'$ in'真的是你要尋找的是什麼? [docs](http://docs.mongodb.org/manual/reference/operator/in/) – WiredPrairie 2013-04-22 10:51:46
您當前的查詢和您試圖實現的結果的示例將非常有用。這聽起來像你想要一個'$ in'查詢。 – Stennie 2013-04-22 13:04:27
@WiredPrairie:是的,完全...謝謝它的工作.. – 2013-04-22 13:33:31