1

私のコレクション構造は次のとおりです

{ name : "xyz" , priLoc :{ area : a , country : c } , secondLoc :
[ {area : b ,country : d},{area : b ,country : d} ]}

priLoc と secondLoc の両方で地域を論理和し、priLoc と secondLoc で国を論理和するクエリを作成したいと思います。

以下のようなクエリを作成しました

  var query = new BasicDBObject()

   val areaObjList = new BasicDBList
    var primaryArea = new BasicDBObject("priLoc.area", areaList)
   var secondaryArea = new BasicDBObject("secondLoc.area",areaList)
   areaObjList.add(primaryArea)
   areaObjList.add(secondaryArea)
   query.put("$or", areaObjList)

   val countryObjList = new BasicDBList
   val primaryCountry = new BasicDBObject("priLoc.country",countryList)
   val secondaryCountry = new BasicDBObject("secondLoc.country",countryList)
   countryObjList.add(primaryCountry);
   countryObjList.add(secondaryCountry);
   query.put("$or", countryObjList)

ただし、このコードを実行する場合、areaObjList は countryObjList によって再生されるため、一度にクエリ オブジェクトに存在するオブジェクトは 1 つだけです。

両方またはオブジェクトがareaObjListとcountryObjListを意味するクエリを作成したいと思います。

これをどのように実装しますか。または私は何か間違っている

誰かが知っているなら、返信してください。

ありがとう

4

2 に答える 2

2

$ andはmongoでリクエストされた機能であり、まもなくhttps://jira.mongodb.org/browse/SERVER-1089に登場します。デフォルトでは、演算子は論理積になっていますが、このような場合、$またはandsと混合すると、$and演算子が必要になります。

于 2011-04-13T19:20:31.600 に答える
1

MongoDB は、SQL から期待される一般的なクエリ言語を提供しません。基本的に、すべてのクエリ式は AND を使用して (暗黙的に) 結合されます。$or 演算子を使用して、任意の数の式を組み合わせることができます。しかし、次のようなクエリのジェネリックはありません

(a と b) または (c と d) またはそうでない (x と y) など....

http://www.mongodb.org/display/DOCS/Advanced+Queries

于 2011-04-13T13:01:18.250 に答える