假设以下架构:
var user = {
books : [{bookId : {type: String, ref: 'Book'}}]
};
以及以下数据:
user1.books[{bookId : 'id1'}, {bookId : 'id2'}]
user2.books[{bookId : 'id2'}]
找到 user1 和 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);
});
请注意,此查询只能查找两个人之间的共同书籍。
关于node.js - mongodb/mongoose 查找两个数组中的共同元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293765/