如何在mongodb中执行oring

时间:2011-04-13 11:53:17

标签: mongodb mongo-scala-driver

我的收藏结构如下

{ 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)

但是当这个代码运行时,countryObjList将重放areaObjList 所以在时间只有一个或对象出现在查询对象

我想查询哪个和两个或对象意味着areaObjList和 countryObjList。

如何实现这一点。或者我做错了什么

如果有人知道plz回复。

由于

2 个答案:

答案 0 :(得分:2)

$ and是mongo中的请求功能,即将推出https://jira.mongodb.org/browse/SERVER-1089。默认情况下,运算符是一起结合的,但是在这样的情况下,你有$或混合使用$和运算符。

答案 1 :(得分:1)

MongoDB不提供您可能从SQL中获得的通用查询语言。基本上所有查询表达式都使用AND(隐含地)组合。您可以使用$或运算符组合任意数量的表达式。但是对于像

这样的查询没有通用

(a和b)或(c和d)或不(x和y)等......

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