【问题标题】:Find a Mongodb document if it contains an element in the array in mongoose查找 Mongodb 文档,如果它包含 mongoose 中的数组中的元素
【发布时间】:2014-05-19 12:59:43
【问题描述】:

如果我在 mongodb 文档中有一个包含数组的字段,例如:

"tags" : [  "tag", "etc1",  "etc2",  "etc3" ]

如果该文档包含元素“etc1”,我是否可以选择该文档?
如果我尝试使用查询:

db.coll.find({"tags" : { $elemMatch: { value0: 'etc1'} }})

但我需要知道元素在数组中的位置,我不知道。
我也试过:

db.coll.find({"tags" : { $elemMatch: 'etc1' }})

但它必须是一个对象。有没有办法做到这一点?

注意我正在使用猫鼬,但我不确定如何构建查询

【问题讨论】:

  • 请不要发布诸如“但如果它需要是一个对象”之类的声明。请实际展示您的真实数据以及您实际尝试执行的操作。更改名称以保护无辜者,但显示您的实际需求。

标签: arrays node.js mongodb mongoose


【解决方案1】:

使用$in 运算符,如this questionthis other question 中所述以及mongodb docs 中所述,并且可以是accessed in mongoose

有了它,你会得到一个看起来像这样的查询...remembering that you must pass an array when using $in:

db.coll.find({"tags" : { $in : ['etc1'] } } );

【讨论】:

    【解决方案2】:

    除了使用 $in 运算符,您还可以使用 $all 运算符,例如:

    db.col1.find({"tags":{$all :["etc1"]}})
    

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 1970-01-01
      • 2020-06-07
      • 2021-02-21
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多