Node.js 如何使用mongoose find()在数组中查找指定对象属性的值
我的模式Node.js 如何使用mongoose find()在数组中查找指定对象属性的值,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我的模式 { _id: xxxxxxxxxxxxx, totalCreatedForms: [ {formName: "formone", formIndex: 0}, {formName: "formtwo", formIndex: 1}, {formName: "formthree", formIndex: 2} ] } 我使用mongoose查询查找我需要的表单,如下所示: db.collection.find({"t
{
_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
})
查找查询有两个对象
第一个匹配您要查找的元素
第二个是指示返回哪些字段。因此,\u id
字段将不会被返回,并且从数组中只返回放置位置运算符的索引
输出示例如下所示:
[
{
“totalCreatedForms”:[
{
“formIndex”:1
}
]
}
]
请注意,mongo是一个存储文档并返回文档的数据库,因此这是仅获取所需值而不是整个数组的最简单方法(无需聚合)
范例