繁体   English   中英

如何使用 mongoose find() 在数组中查找指定对象属性的值

[英]How to find a value of a specified object property in a array using mongoose find()

我的架构

{
_id: xxxxxxxxxxxxx,
totalCreatedForms: [
{formName: "formone", formIndex: 0},
{formName: "formtwo", formIndex: 1},
{formName: "formthree", formIndex: 2}
]
}

我使用 mongoose 查询来查找我需要的表单,如下所示:

db.collection.find({"totalCreatedForms.formName":"formtwo"}, data=>{res.send(data)})

有没有办法,我可以得到指定表单的formIndex的值。 这里我得到了“_id”的全部数据,我必须在前端再次过滤它。 但是,我想知道是否有查询来获取指定表单的值。

您需要以这种方式$运算符:

db.collection.find({
  "totalCreatedForms.formName": "formtwo"
},
{
  "_id": 0,
  "totalCreatedForms.formIndex.$": 1
})

查找查询有两个对象。

第一个匹配您要查找的元素。

第二个是指示哪些字段返回。 因此,不会返回_id字段,并且从数组中,只会返回放置位置运算符的索引。

输出示例是这样的:

[
  {
    "totalCreatedForms": [
      {
        "formIndex": 1
      }
    ]
  }
]

请注意,mongo 是一个存储文档并返回文档的数据库,因此这是仅获取所需值而不是整个数组的最简单方法(无需聚合)。

示例在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM