如何在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
)));