我有几个收藏集:rooms
,messages
和users
。每个message
文档都具有room
属性,该属性是房间文档的ObjectId引用,还具有一个sender
属性,该属性引用一个user
文档。我试图将所有消息以及每个消息的发件人放在一个房间。我当前的代码如下:
Room.aggregate([
{
$match: { _id: new mongoose.Types.ObjectId('5ed4ffcdd13f45b4104a1669') },
},
{
$lookup: {
from: 'messages',
localField: '_id',
foreignField: 'room',
as: 'messages',
},
},
{
$lookup: {
from: 'users',
localField: 'messages.sender',
foreignField: '_id',
as: 'messages.sender'
}
},
{
$unwind: '$messages.sender'
},
{
$sort: { 'messages.createdAt': -1 },
},
])
以上结果仅返回一个message
文档,其中仅填充了sender
,而message
文档中未包含其他字段。
当我返回sender
文档时,如何填充每一封邮件的room
属性?