我在MongoDB中有一个文档,其中包含嵌入式文档的列表。让我们以带有轮胎列表的汽车文档的简化示例为例:
{
"make": "Toyota",
"color": "blue",
"tires": [{
"make": "Mishlen",
"size": 185
}, {
"make": "Mishlen",
"size": 210
}]
}
[当我运行以下查询以查找所有轮胎尺寸小于200的汽车时,我得到了相同的文档,但我不知道哪个轮胎与查询匹配。
{"tires.size": {$gt: 200}}
我正尝试将这种结果归还给您:
{
"make": "Toyota",
"color": "blue",
"tires": [{
"make": "Mishlen",
"size": 185,
"matched": true
}, {
"make": "Mishlen",
"size": 210,
"matched": false
}]
}
通过这种方式,我可以分辨出哪些轮胎与我的查询匹配。实现这种结果的最佳方法是什么?在性能方面。
db.yourCollectionName.aggregate([
{ $addFields: {
tires: {$filter: {
input: '$tires',
as: 'each',
cond: {$lt: ['$$each.size', 200]}
}}
}}
])
Ref: $addFields,$filter