你如何做一个查询,如下面的一个,我想要在伦敦的酒店或酒店有他们的名字希尔顿?
这个查询 db.hotels.find({$其中: “名称= /希尔顿/ I ||城市= /伦敦/ I”})
给出了这样一个错误 错误:{“$ ERR “: ”$其中编译错误“}
两个查询单独工作确定: db.hotels.find({$其中: ”城市= /伦敦/ I“}) db.hotels.find({$哪里:“name =/hilton/i”})
你如何做一个查询,如下面的一个,我想要在伦敦的酒店或酒店有他们的名字希尔顿?
这个查询 db.hotels.find({$其中: “名称= /希尔顿/ I ||城市= /伦敦/ I”})
给出了这样一个错误 错误:{“$ ERR “: ”$其中编译错误“}
两个查询单独工作确定: db.hotels.find({$其中: ”城市= /伦敦/ I“}) db.hotels.find({$哪里:“name =/hilton/i”})
试试这个:
db.hotels.find({
$where: "/london/i.test(this.city) || /hilton/i.test(this.hotel)"
})
备注 据我所知,$where
做每个文件的评估,所以它可以很慢。如果你有一个单独的属性,我建议像水木清华
db.hotels.find({name: /(hilton|london)/i})
现在,MongoDB的支持$或条件,你可以做到这一点,如:
db.hotels.find({ $or: [ { name: /hilton/i },
{ city: /london/i }
]
});
但我找两个不同字段:(否则第二个查询会很好 – 2009-12-22 11:48:57
啊!我已经更新了答案。 – 2009-12-22 12:55:37
谢谢亚历克斯:)你几乎是正确的 – 2009-12-23 08:21:47