我有一个用户架构,用户可以成为朋友。

我有一个友谊模式:

var friendshipSchema = mongoose.Schema({
    from : { type: Schema.Types.ObjectId, ref: 'User' },
    to : { type: Schema.Types.ObjectId, ref: 'User' }
});


现在,我想从用户foo获得所有朋友:

Friendship
.find({
    $or : [
        { from : foo._id },
        { to : foo._id }
    ]
})


问题是:我想填充所有来自foo的朋友,而不是foo本人(因为对于X个朋友,我将填充X个foo)。

我该如何实现?

谢谢!

最佳答案

这是我所做的:

Friendship
.find({
    $or : [
        { from : user._id },
        { to : user._id }
    ]
})
.populate({
    path: 'from',
    match: { _id: { $ne: user._id }},
    select: '-token'
},{
    path: 'to',
    match: { _id: { $ne: user._id }},
    select: '-token'
})
.lean()
.exec(function(err, retData)
{
         // Do something here...
});

关于node.js - 多对多关系MongoDB Mongoose ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24393729/

10-12 00:07
查看更多