2014-06-24 47 views
1

我有一个用户架构,用户可以成为朋友。多对多的关系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 s填充)。

我怎么能做到这一点?

谢谢!

回答

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