2014-06-24 69 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... 
});