我的收藏结构如下
{ 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回复。
由于
答案 0 :(得分:2)
$ and是mongo中的请求功能,即将推出https://jira.mongodb.org/browse/SERVER-1089。默认情况下,运算符是一起结合的,但是在这样的情况下,你有$或混合使用$和运算符。
答案 1 :(得分:1)
MongoDB不提供您可能从SQL中获得的通用查询语言。基本上所有查询表达式都使用AND(隐含地)组合。您可以使用$或运算符组合任意数量的表达式。但是对于像
这样的查询没有通用(a和b)或(c和d)或不(x和y)等......