как получить правильный результат от mongodb в Stack Overflow

у меня есть такой объект:

$testData = array(
'name' => 'joyCood',
'nick' => 'hello',

'friends' => array(
array('friend_id' => 98, 'readable' => 8),
array('friend_id' => 97, 'readable' => 0),
array('friend_id' => 96, 'readable' => 0)
)
);

мой запрос sql:

$macher = array('friends.friend_id' => 98, 'friends.readable' => 0);
$mongo->find($macher);

результат:

$testData = array(
'name' => 'joyCood',
'nick' => 'hello',

'friends' => array(
array('friend_id' => 98, 'readable' => 8),
array('friend_id' => 97, 'readable' => 0),
array('friend_id' => 96, 'readable' => 0)
)
);

проблема в том, что читаемое значение не равно eq 0, почему mongodb возвращает мне этот объект? правильный результат будет возвращен ничего не будет хорошо. Помоги мне, пожалуйста!

0

Решение

Я вижу это сейчас. Проблема здесь в том, что условия, перечисленные вами, рассматриваются все члены массива, а не только отдельный. Для этого вам нужно $elemMatch:

$macher = array( 'friends' => array( '$elemMatch' => array(
'friend_id' => 98, 'readable' => 0
)));

При этом каждый элемент имеет одинаковые условия запроса. В противном случае на самом деле в массиве есть элементы, которые соответствуют каждому условию, и соответствие true,

По сути, это «маленький запрос», который применяется к каждому элементу массива, чтобы проверить, выполняются ли оба условия.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]