使用Mongoose填充其他集合的logging数

我有2个mongoose模型,书和用户。 我想这样做:当find一本书,我想获得当前书籍用户的数量。

这是书模型:

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; } ); 

现在这个代码获取一本书,但我想填充用户模型内的用户数,并将它们添加到新获取的书对象。

我读了这个文件,但我不能完成: 人口

 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); 

将人员添加到书籍或书籍时,您需要更新这两个模式。 要获得当前的图书用户,只需find该书,然后获取其owner_ids字段的长度。

你想做什么通常被称为反向查找。 幸运的是,有人已经为此创build了一个模块。 它似乎不是一个非常常用的模块,但你可以看看它是否符合你的需求: 反向填充 。