因此,我有两个集合,一个关于人,另一个描述那些人参与的事件。我试图比较两个人使用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查询中访问文档的实际字段值?