我想通过填充字段查询。在这种情况下,填充的字段是评论。因此,如果我的搜索查询与评论表描述字段匹配...则返回该书。评论是一系列对象,描述是其中的关键之一。
我尝试在查询对象中使用评论[0] .description但它没有用。
getBookInfo: (req, res) => {
const search = req.params.search;
const query = { $or: [{ title: { $regex: search, $options: 'i' } }] };
Books.find(query).populate('reviews').exec(function(err, books) {
if (err) {
return err;
}
return books;
});
}
答案 0 :(得分:0)
您想要搜索图书并填充与您的查询匹配的评论。
所以documentation你有权使用match
来填充人口。
你走了:
getBookInfo: async (req, res) => {
try {
const search = req.params.search;
// query for books matching by condition
const query = {
$or: [
{ title: { $regex: search, $options: 'i' } },
{ description: { $regex: search, $options: 'i' } },
]
};
// include reviews matching by conditions
const include = {
path: 'reviews',
match: {
description: {
$regex: search,
$options: 'i'
}
},
options: {limit: 5}
};
const books = await Books
.find(query)
.populate(include)
.lean();
res.status(200).send(books);
}
catch (error) {
res.status(500).send(error);
}
};
更新:
据我所知您想查询评论和预订。
book
字段,该字段会保留图书_id
,title
和description
。