【发布时间】:2021-07-03 12:31:59
【问题描述】:
我正在努力编写这个查询。
从以下数据集中,我想找出资源数组中包含“EC2”的文档,并仅打印出数组中的那个元素。
数据:
[
{
"projectName": "first"
"resources": [
{
"resource": "EC2",
"region": "ap-south-1",
"params": {
"ImageId": "ami-0bcf5425cdc1d8a85",
"InstanceType": "t2.micro",
}
},
{
"resource": "S3",
"region": "ap-south-1",
"params": {
"Bucket": "test-bucket"
}
}
],
}
]
预期输出:
{
"resource": "EC2",
"region": "ap-south-1",
"params": {
"ImageId": "ami-0bcf5425cdc1d8a85",
"InstanceType": "t2.micro",
}
}
我尝试过的查询:
const projects = await Project.aggregate([
{
$match: {
resources: {
$elemMatch: {
resource: { $eq: 'EC2' },
},
},
},
},
{
$project: {
resourceName: '$resources.resource',
region: '$resources.region' // and so on
},
},
]);
^^ 这也将返回资源数组中的其他元素
【问题讨论】:
标签: node.js mongodb mongoose nosql