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 重放时,查询对象中只存在一个或对象

我想查询 which 和 both or object 表示 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 and b) or (c and d) or not (x and y) etc....

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

于 2011-04-13T13:01:18.250 回答