MongoDB是否将索引用于;加入;收藏?

MongoDB是否将索引用于;加入;收藏?,mongodb,Mongodb,我有两个系列:a和b。b有字段x。 集合b中有字段x的索引 当我尝试时: db.a.aggregate([ $lookup:{ from:"b", localField:"parent.id", foreignField:"_id", as:"joined" } },

我有两个系列:a和b。b有字段x。 集合b中有字段x的索引

当我尝试时:

    db.a.aggregate([
            $lookup:{
                from:"b",
                localField:"parent.id",
                foreignField:"_id",
                as:"joined"
                }
            },
            {
                '$match':{
                    'joined.x':{'$gt':2}
                }
            }
])
它不使用索引。怎么了

更新

它甚至不以以下方式编制索引:

db.a.aggregate([{$lookup: {
                from: "b",
                let: { parentId: "$parent.id"},
                pipeline: [
                    { $match:
                        { $expr:
                            { $eq: [ "$x",  2 ] },
                            { $eq: [ "$_id",  $$parentId ] },
                        }
                    }
                ],
                as: "joined"
            }}
            ])

mongodb
或您在此处的查询没有问题

唯一可以在聚合管道中使用索引的阶段是第一阶段,它必须是
$match
$geoNear
或`$sort

从MongoDB 3.2版开始,它可以覆盖整个管道,但只能
$match
$geoNear
$sort
,但由于,$lookup创建了全新的文档,因此MongoDB管道无法在下一个
$match
阶段使用索引


有关详细信息,请阅读。

$match
仅当索引用作聚合管道中的第一个阶段时,才可以利用它。
$lookup
正在创建一个新文档,然后在该文档上进行匹配。它与
contents
b
中的文档都没有任何相似之处。在版本3.2中进行了更改:从MongoDB 3.2开始,索引可以覆盖聚合管道。我已经更新了我的问题,您能看一下吗?