Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用mongoose find()在数组中查找指定对象属性的值_Node.js_Mongodb_Mongoose - Fatal编程技术网

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是一个存储文档并返回文档的数据库,因此这是仅获取所需值而不是整个数组的最简单方法(无需聚合)

范例