正如我的标题所说,是否可以在我的mongodb中查询(使用nodejs)数据列表,并检查另一个表中是否存在该ID?
所以我想说:
var users = new Schema({
name: String
});
我有另一张桌子:
var books = new Schema({
user_id: { type: Schema.Types.ObjectId, ref: 'users' }
});
当我得到所有'用户,我想检查他们是否有书籍。我将如何在nodejs中进行此操作?
答案 0 :(得分:0)
您可以使用嵌套循环和记录计数来实现此目的:
function getAllUsersWithBooks (callback) {
var books_by_users = []
// return only user_id
user.find({}, {_id : 1}, function (e, ids) {
if (e) return callback(e);
var remaining = ids.length;
ids.forEach(function (user) {
books.find({user_id : user._id}, function (e, books) {
if (e) return callback(e);
var users_books = {user_id : user:_id, books : []};
var books_left = books.length;
books.forEach(function (b) {
users_books.books.push(b.toObject());
if (!--booksLeft) {
books_by_user.push(user_books);
if (!--remaining) {
callback(null, books_by_user);
}
}
})
})
})
})
}
getAllUsersWithBooks(function (e, list) {
if (e) {
// handle error
}
console.log(list);
/*
[{user_id : 123123, books : [b1, b2, etc],
{user_id : 342342, books : [b3, b4, etc]}
*/
})