如何在php中从mongodb获得正确的结果
我有一个这样的物体:如何在php中从mongodb获得正确的结果,php,mongodb,mongodb-query,Php,Mongodb,Mongodb Query,我有一个这样的物体: $testData = array( 'name' => 'joyCood', 'nick' => 'hello', 'friends' => array( array('friend_id' => 98, 'readable' => 8), array('friend_id' => 97, 'readable' => 0), array('friend
$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将此对象返回给我?正确的结果是什么都不会好。请帮帮我 我现在看到了。这里的问题是,您列出的条件会在所有数组成员中考虑,而不仅仅是单个数组成员。为此,您需要: 这将考虑每个元素具有相同的查询条件。否则,数组中的某些元素实际上与每个条件匹配,并且匹配为true 基本上是一个应用于数组中每个元素的小查询,以查看这两个条件是否都为真。readable在文档数组中的几个元素中为0,因此是的,这是一个匹配项。实际上,您是否在询问数组内容中没有可读的0?
$macher = array( 'friends' => array( '$elemMatch' => array(
'friend_id' => 98, 'readable' => 0
)));