MongoDB在查询后将匹配的键添加到列表中

问题描述 投票:2回答:1

我在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
    }]
}

通过这种方式,我可以分辨出哪些轮胎与我的查询匹配。实现这种结果的最佳方法是什么?在性能方面。

python mongodb mongoengine
1个回答
0
投票
请尝试这个:

db.yourCollectionName.aggregate([ { $addFields: { tires: {$filter: { input: '$tires', as: 'each', cond: {$lt: ['$$each.size', 200]} }} }} ])

Ref: $addFields$filter

© www.soinside.com 2019 - 2024. All rights reserved.