"и" в пределах "или" в PHP-запросе MongoDB - PullRequest
2 голосов
/ 30 декабря 2011

mongodb и / или combo Аналогично этому, за исключением того, что я использую 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-запрос, я получаю $ или ошибку. Это возможно? Является ли $ и требуется?

1 Ответ

5 голосов
/ 30 декабря 2011

Ваш запрос просто неверен. В 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,
           )
     ),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...