mongodb / mongoose在两个数组中find常用元素
假设以下模式:
var user = { books : [{bookId : {type: String, ref: 'Book'}}] };
和以下数据:
user1.books[{bookId : 'id1'}, {bookId : 'id2'}] user2.books[{bookId : 'id2'}]
finduser1和user2书籍交集的最佳方法是什么? 一个查询会告诉我,user1和user2与bookId:'id2'共有一本书。
谢谢。
你可以使用相同的聚合:
//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); });
请注意,此查询只能在两个人之间find常用书籍。