2009-12-22 77 views
5

你如何做一个查询,如下面的一个,我想要在伦敦的酒店或酒店有他们的名字希尔顿?

这个查询 db.hotels.find({$其中: “名称= /希尔顿/ I ||城市= /伦敦/ I”})

给出了这样一个错误 错误:{“$ ERR “: ”$其中编译错误“}

两个查询单独工作确定: db.hotels.find({$其中: ”城市= /伦敦/ I“}) db.hotels.find({$哪里:“name =/hilton/i”})

回答

5

试试这个:

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

备注 据我所知,$where做每个文件的评估,所以它可以很慢。如果你有一个单独的属性,我建议像水木清华

db.hotels.find({name: /(hilton|london)/i}) 
+0

但我找两个不同字段:(否则第二个查询会很好 – 2009-12-22 11:48:57

+0

啊!我已经更新了答案。 – 2009-12-22 12:55:37

+0

谢谢亚历克斯:)你几乎是正确的 – 2009-12-23 08:21:47

7

现在,MongoDB的支持$或条件,你可以做到这一点,如:

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