如何在第一级数组上使用$ elemMatch?

时间:2013-04-22 07:26:21

标签: mongodb mongodb-query

考虑以下文件:

{
  "_id" : "ID_01",
  "code" : ["001", "002", "003"],
  "Others" : "544554"
}

我经历了MongoDB doc for elemmatch-query& elemmatch-projection,但无法弄清楚如何在上述文档中使用相同内容。

有人能告诉我如何将$elemMatch用于字段代码?

2 个答案:

答案 0 :(得分:9)

在这种情况下,您需要使用$in运算符而不是$elemMatch,因为$in可用于搜索特定字段内的值(或多个值)。 $ in需要将值列表作为数组传递。此外,对于您的情况,它将找到单个值,或通过搜索值数组。返回整个匹配文档。

例如,您可以像这样使用它:

db.mycodes.find( { code: { $in: ["001"] } } )

可以简化为:

db.mycodes.find({ code: "001" })

由于MongoDB会在数组中查找上面的单个匹配项("001")。

或者,如果您要搜索"001""002"

db.mycodes.find( { code: { $in: ["001", "002"] } } )

$in documentation

答案 1 :(得分:2)

如果您只想将所有文档与包含给定值的数组匹配,则只需指定对该数组的引用的值,例如

db.mycodes.find( { code: '001' } )

因此会返回包含'001'数组

code的所有文档