2013-09-29 273 views
6

我需要根据多个文本字段来查找文档。猫鼬或查询

var term = new RegExp(req.query.search, 'i'); 
.find({ company_name: { $regex: term }}); 

使用上面的作品很棒。但是,当我尝试添加使用的其他字段时

.find(...).or([{ bio: { $regex: term }}]); 

它无法检索任何记录。我需要为更多的领域做到这一点。

该模式具有索引的不同文本字段,但不能作为单个多字段索引组合在一起。这会更好吗?如果是这样,有没有这方面的明确例子?我发现的文档非常稀少。

任何想法?

回答

9

把两个字段必须清楚交代传递给or数组:

.find().or([{ company_name: { $regex: term }}, { bio: { $regex: term }}]); 

独立单场指数是你想要什么,因为每个or术语作为一个单独的查询执行。

+0

非常有意义并修复了我的问题。谢谢 – user2787799