MongoDB很多很多关系都是猫鼬

时间:2014-06-24 18:26:30

标签: node.js mongodb mongoose

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

我有友谊架构:

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

我怎么能实现这个目标?

谢谢!

1 个答案:

答案 0 :(得分:0)

这就是我所做的:

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...
});