2

我这里有数组。

http://pastebin.com/i5ZUQNm6

这来自php结果。

$result1 = $mo->find(
  array(
    'username' => 'BLABLA',
    'stream' => array('$exists' => true)
  )
);  
foreach ($result1 as $obj) {
  print_r($obj);
}

我如何对 [stream] 子项进行排序并将其限制为 1 个结果?以及如何找到 [id_stream] 孩子?

谢谢

4

2 回答 2

0

为了限制,单个文档使用limit(1)

$result1 = $mo->find(array('username' => 'BLABLA', 'stream' => array('$exists' => true)))->limit(1);

或者 findOne

$result1 = $mo->findOne( array('username' => 'BLABLA', 'stream' => array('$exists' => true) ) );


并对孩子进行分类。您还需要在最后添加->sort(array("stream.time" => -1)); 我见过的 pastebin,我猜您想按日期订购。


最终代码:

 $result1 = $mo->findOne(   array(
     'username' => 'BLABLA',
     'stream' => array('$exists' => true)))->sort(array("stream.time" => -1));;

根据我所知道的限制为数组的单个值,您需要一个需要添加的循环 (在查找内部,就在主数组之后):find(.... , array('streams' => array('$slice' => 1)));

于 2012-11-20T21:15:41.800 回答
0

使用sortlimit的组合应该可以工作-slownage 的答案中的代码看起来可能是您需要的。

于 2012-11-20T21:22:37.047 回答