MongoDB:使用当前字段值在$ project语句中调用findOne

时间:2019-03-07 22:04:45

标签: mongodb

因此,我有两个集合,一个关于人,另一个描述那些人参与的事件。我试图比较两个人使用mongo shell参与的事件的数量。

这是我目前拥有的:

db.events.aggregate([
    {
        $match: {
            $or: [
                {person_id: db.profiles.findOne({name: "PersonA"}).person_id},
                {person_id: db.profiles.findOne({name: "PesronB"}).person_id}
            ]
        }
    },
    {
        $group: {_id: "$person_id", event_count: {$sum: 1}}
    },
    {
        $project: {
            _id: 1,
            name: db.profiles.findOne({person_id:"$_id"}).name,
            event_count: 1
        }
    }
])

我的问题是在$ project调用中,我试图将每个人的名字放在他们所参与的事件计数的旁边。由于name不是事件集合中的字段,因此我基于在事件文档的person_id中。不过该查询失败了,我认为这是因为查询中的$_id没有引用实际的_id字段。

如何在findOne查询中访问文档的实际字段值?

0 个答案:

没有答案