我有2种模式:问题和主题。我尝试做一个查询,用户可以在其中搜索文本匹配项和主题(可以从下拉列表中进行选择)。
我的问题是,当用户搜索多个主题时-并不会显示所有问题。因为查询与主题的空洞数组匹配,所以还会给出部分与主题匹配的问题。这就是查询的样子:
app.post('/search', function (req, res){
var search_text = req.body.search_text;
// Running on all topics first to convert the names to id's
Topic.find({name: {"$in": req.body.dropdown_topics_clicked}}).select('_id').exec(function (err, topics){
if (err) return console.error(err);
var topics_for_search = topics;
// Fetching all questions, and condition with the the text and the topics.
Question.find().and([
{ $or: [ {'syntax': { $regex: search_text}}, {'answer': { $regex: search_text}}] },
{ topics: {"$in":topics_for_search} }
])
.exec(function (err, questions){
if (err) return console.error(err);
res.json(questions);
});
});
});
如何查询ID数组上运行的部分匹配内容?