2015-10-23 100 views
1

共同要素假設下面的模式:的MongoDB /貓鼬發現兩個數組

var user = { 
    books : [{bookId : {type: String, ref: 'Book'}}] 
}; 

和下面的數據:

user1.books[{bookId : 'id1'}, {bookId : 'id2'}] 
user2.books[{bookId : 'id2'}] 

什麼是找到user1和user2書之間的交叉最好的方法是什麼?一個查詢會告訴我,user1和user2有一本bookId共同的書:'id2'。

謝謝。

回答

1

您可以使用聚合爲同:

//Assuming the user model is named User 
User.aggregate([ 
    {$match: {_id: {$in: [user1._id, user2._id]}}}, 
    {$group: {_id: 0, books1: {$first: "$books"}, books2: {$last: "$books"}}}, 
    {$project: {commonBooks: {$setIntersection: ["$books1","$books2"]}, _id: 0}} 
], function(err, res) { 
    console.log(err, res); 
}); 

注意這個查詢只能在兩個人之間找到共同的書籍。