我需要根据多个文本字段查找文档。
var term = new RegExp(req.query.search, 'i');
.find({ company_name: { $regex: term }});
使用上述作品很棒。但是,当我尝试使用
添加其他字段时.find(...).or([{ bio: { $regex: term }}]);
无法检索任何记录。我需要为更多领域做这件事。
架构具有索引的不同文本字段,但不能作为单个多字段索引一起使用。这会更好吗?如果有的话,有没有明确的例子呢?我发现的文档很少。
有什么想法吗?
答案 0 :(得分:10)
将两个字段放入传递给or
的数组中:
.find().or([{ company_name: { $regex: term }}, { bio: { $regex: term }}]);
您需要单独的单字段索引,因为每个or
字词作为单独的查询执行。