在mongodb中的$ where中的两个不同字段的逻辑OR

时间:2009-12-22 10:47:21

标签: mongodb

如何查询下面的查询,我想要伦敦的酒店或者名字中有希尔顿的酒店?

此查询 db.hotels.find({$ where:“name = / hilton / i || city = / london / i”})

给出了这样的错误 错误:{“$ err”:“$ where compile error”}

两个查询分别正常工作: db.hotels.find({$ where:“city = / london / i”}) db.hotels.find({$ where:“name = / hilton / i”})

2 个答案:

答案 0 :(得分:7)

现在,mongodb支持$或condition,你可以这样做:

db.hotels.find( { $or: [ { name: /hilton/i }, 
                         { city: /london/i } 
                       ] 
              } );

答案 1 :(得分:5)

试试这个:

db.hotels.find({
    $where: "/london/i.test(this.city) || /hilton/i.test(this.hotel)"
})

注意 据我所知,$where执行每个文档的评估,因此它可能非常慢。如果你有一个属性,我建议像

那样
db.hotels.find({name: /(hilton|london)/i})