如何从php中获取mongodb的正确结果

时间:2014-10-23 08:15:42

标签: 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_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会将此对象返回给我?正确的结果将是返回一切都没关系。请帮帮我!

1 个答案:

答案 0 :(得分:0)

我现在看到了。这里的问题是,列出它们的条件在所有数组成员中被考虑,而不仅仅是单个成员。为此,您需要$elemMatch

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

这会考虑每个元素都具有"相同的"查询条件。否则实际上有元素"某处"在匹配每个条件的数组中,匹配为true

基本上是一个"小查询"应用于数组的每个元素以查看两个条件是否都为真。