и внутри или в запросе PHP MongoDB

mongodb и/или комбо Аналогично этому, за исключением того, что я использую php и получаю [MongoCursorException] $или массив должен содержать объекты.

Также прочитайте это http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or

Как можно вложить "И" внутрь "ИЛИ" в MongoDB через PHP? Вот мой аргумент условий (через var_export):

'group_id' => '4eec13b5-aeb4-48ee-9619-449125af0e18',
'$or' => 
array (
  0 => 
  array (
    0 => 
    array (
      'active' => 0,
      'user_id' => '4eea7b76-5d34-4036-8344-120c0aaa1bdc',
    ),
  ),
  1 => 
  array (
    1 => 
    array (
      'active' => 1,
    ),
  ),
)

Нужен список сообщений, которые находятся в группе с идентификатором И являются активными ИЛИ (принадлежат пользователю И не активны).

Чрезвычайно легко в SQL, но какой бы вариант я ни пробовал в MongoDB через запрос PHP, я получаю ошибку $ или. Это возможно? Требуется ли $and?


person Aaron    schedule 30.12.2011    source источник


Ответы (1)


ваш запрос просто неверен. В JSON это будет выглядеть так

{ 
   "group_id" : "4eec13b5-aeb4-48ee-9619-449125af0e18",
   "$or" : [ 
                    [ { "active" : 0, "user_id" : "4eea7b76-5d34-4036-8344-120c0aaa1bdc" } ],
                    [ null, { "active" : 1 } ] 
           ]
}   

для идентификатора группы И активны ИЛИ (принадлежат пользователю И не активны), это должно быть представлено примерно так:

{ 
   "group_id" : "4eec13b5-aeb4-48ee-9619-449125af0e18",
   "$or" : [ 
                    { "active" : 0, "user_id" : "4eea7b76-5d34-4036-8344-120c0aaa1bdc" },
                    { "active" : 1 } 
           ]
}   

Примерно так это будет выглядеть в PHP

array(
'group_id' => '4eec13b5-aeb4-48ee-9619-449125af0e18',
'$or' => 
     array (
        0 => 
           array (
               'active' => 0,
               'user_id' => '4eea7b76-5d34-4036-8344-120c0aaa1bdc',
           ),
        1 => 
           array (
               'active' => 1,
           )
     ),
)
person Nat    schedule 30.12.2011
comment
Спасибо! Я не решил проблему, пока не начал просматривать свой php как json. Тестирование запросов в командной строке с помощью json — очень хороший способ разобраться с mongo! - person Aaron; 30.12.2011