我有2个Mongoose模型,Book和Users。我想这样做:当找到一本书时,我想得到当前图书用户的数量。
这是图书模型:
var mongoose = require('mongoose');
var Users = require('../users');
var schema = new mongoose.Schema({
book_name: String,
book_publisher: String
});
var book = mongoose.model('book', schema);
module.exports = book;
这是用户模型:
var mongoose = require('mongoose');
var Book = require('../book');
var schema = new mongoose.Schema({
user_name: String,
book_id: String
});
var users = mongoose.model('users', schema);
module.exports = users;
我拿这样一本书:
Book.find({book_name:name).exec(
function(err, book) {
if (err) {
throw err;
}
var new_book = book;
}
);
现在tis代码获取一本书,但我想填充Users模型中的用户数并将它们添加到新获取的书对象中。
我读过这份文件,但我无法做到这一点: Population
答案 0 :(得分:0)
您想要做的通常称为反向查找。幸运的是,有人已经为此创建了一个模块。它似乎不是一个非常常用的模块,但您可以看到它是否符合您的需求:reverse-populate。
答案 1 :(得分:0)
User = new mongoose.Schema({
//existing user properties
owned_books: [{type: mongoose.Schema.Types.ObjectId, ref: 'book'}]
}}
var users = mongoose.model('users', User);
var schema = new mongoose.Schema({
book_name: String,
book_publisher: String,
owner_ids: [{type: mongoose.Schema.Types.ObjectId, ref: 'users'}]
});
var book = mongoose.model('book', schema);
当您向人们添加书籍或书籍时,您需要更新这两个架构。要获取当前的图书用户,只需找到该图书,然后获取该图书的owner_ids字段。