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

标签 mongodb mongodb-query

考虑以下文档:

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

我经历了这个MongoDB doc for elemmatch-query & elemmatch-projection ,但无法弄清楚如何将其用于上述文档。

谁能告诉我如何使用 $elemMatch 作为字段代码?

最佳答案

在这种情况下,您需要使用 $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

关于mongodb - 如何在第一级数组上使用 $elemMatch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16141576/

相关文章:

node.js - 本地主机上的 MongoDB SSL 是否是必需的?

javascript - 如何在 Node.js 中创建 Get 请求以从 json 获取特定对象?

MongoDB对索引字段的查询非常慢

mongodb - 按舍入值键聚合文档

mongodb - 如何获取最近三个月在mongo shell中创建的所有文档

mongodb - 如果没有包含数组的相应查询字段,则无法应用位置运算符

node.js - 检索存储在 mongodb 中的图像

MongoDB:使用变量进行文本搜索(精确匹配)

node.js - 使用 mongoose 更新深度嵌套的子文档

以 id 为键的 MongoDB 组和求和