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

Amo*_*rni 11 mongodb mongodb-query

请考虑以下文档:

{
  "_id" : "ID_01",
  "code" : ["001", "002", "003"],
  "Others" : "544554"
}
Run Code Online (Sandbox Code Playgroud)

我通过这个MongoDB文档进行了elemmatch-queryelemmatch-projection,但是无法弄清楚如何在上面的文档中使用它.

谁能告诉我如何使用$elemMatch现场代码?

Wir*_*rie 11

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

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

db.mycodes.find( { code: { $in: ["001"] } } )
Run Code Online (Sandbox Code Playgroud)

这可以简化为:

db.mycodes.find({ code: "001" })
Run Code Online (Sandbox Code Playgroud)

因为MongoDB将在数组中查找单个匹配,如上面的("001").

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

db.mycodes.find( { code: { $in: ["001", "002"] } } )
Run Code Online (Sandbox Code Playgroud)

$ in in documentation


Jos*_*hua 5

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

db.mycodes.find( { code: '001' } )
Run Code Online (Sandbox Code Playgroud)

因此,这将返回包含'001'在其code数组中的所有文档