【发布时间】:2018-02-19 05:33:02
【问题描述】:
我正在尝试使用猫鼬分页来处理带有分页的高级搜索。
我有以下架构:
const authorSchema = Schema({
_id: Schema.Types.ObjectId,
name: {type: String, unique: true},
});
const Author = mongoose.model('author', authorSchema, 'author');
const bookSchema = Schema({
_id: Schema.Types.ObjectId,
name: String,
authors:[{type: Schema.Types.ObjectId, ref: 'author'}]
});
const Book= mongoose.model('book', bookSchema , 'book');
我想查找第 1 页的 24 本书,其中任何一本书都包含作者姓名“jean”。我使用mongoose-paginate 模块执行以下操作:
Book.paginate({}, {
page: 1,
limit: 24,
populate: {
path: 'authors',
select: 'name',
match: {
name: 'jean'
}
}, function (err, books) {
res.json(books);
});
但结果书包含其他作者数组为空的书。我不能使用 books.filter() 来删除作者的书。但如果我这样做,我不能在结果中每页有 24 本书。
这样做的正确方法是什么?
【问题讨论】:
-
我认为不可能。还有另一个包:npmjs.com/package/mongoose-aggregate-paginate-v2
标签: node.js mongodb mongoose pagination