как выполнить anding oring в mongodb - PullRequest
1 голос
/ 13 апреля 2011

моя структура коллекции выглядит следующим образом:

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

Я хочу сделать запрос, что Oring область и priLoc и secondLoc и страна и priLoc и secondLoc.

У меня есть запрос makeкак показано ниже

  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, поэтому в данный момент в объекте запроса присутствует только один объект или объект

Я хочу выполнить запрос, который означает оба объекта или объектareaObjList и countryObjList.

как это реализовать.или я делаю что-то не так

если кто-то знает ответ плз.

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

$ и является запрошенной функцией в монго и скоро появится https://jira.mongodb.org/browse/SERVER-1089.По умолчанию операторы объединяются вместе, но в подобных случаях, когда у вас есть $ или смешано с ands, необходим оператор $ и.

1 голос
/ 13 апреля 2011

MongoDB не предоставляет общий язык запросов, как вы могли бы ожидать от SQL.В основном все выражения запроса объединяются с использованием AND (неявно).Вы можете использовать оператор $ или для объединения произвольного числа выражений.Но нет общего для запроса что-то вроде

(a и b) или (c и d) или нет (x и y) и т. Д ....

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

...