6

ロンドンのホテル、または名前にヒルトンが含まれているホテルが必要な場合、次のようなクエリをどのように実行しますか?

このクエリ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"})

4

2 に答える 2

7

これで、mongodbが$ or条件をサポートするようになり、次のように実行できます。

db.hotels.find( { $or: [ { name: /hilton/i }, 
                         { city: /london/i } 
                       ] 
              } );
于 2010-12-18T07:45:25.670 に答える
5

これを試して:

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

私が理解している限り、$whereドキュメントごとの評価を行うため、かなり遅くなる可能性があります。あなたが単一の属性を持っているなら、私は次のようなsmthを提案したでしょう

db.hotels.find({name: /(hilton|london)/i})
于 2009-12-22T11:42:30.473 に答える