【问题标题】:A pipeline stage specification object must contain exactly one field with php mongo aggregate管道阶段规范对象必须包含一个带有 php mongo 聚合的字段
【发布时间】:2016-12-27 20:45:35
【问题描述】:

我正在尝试将聚合与项目、匹配和排序一起使用,但我遇到了一个异常(确切地说是MongoResultException)说

exception: A pipeline stage specification object must contain exactly one field.

当我不使用排序和限制时它工作正常,但我需要它们。我不使用find() 的原因是我在某处读到它可以提高性能。 请帮忙

$query = array(.... //An actual query that works with find()
$collection = $this->db->CollectionName;
            $project = array(
                '$project'  => array(
                    'Field1'    => 1,
                    'Field2'=> 1,
                    'Field3'=> 1,
                    'Field4'      => 1
                )
            );
            $match = array( '$match'=>$query);
            $sort = array('Field3' => -1, 'Field4'=>-1);
            $limit = array('$limit' => 100);


            $result = $collection->aggregate(array($match,$project,$sort,$limit));
            return $result;

【问题讨论】:

    标签: php mongodb mongodb-query mlab


    【解决方案1】:

    看起来问题出在您的$sort 分配上。你有

       $sort = array('Field3' => -1, 'Field4'=>-1);
    

    这实际上并没有给出$sort 阶段规范。不应该是:

        $sort = array('$sort' => array( 'Field3' => -1, 'Field4'=>-1 ) );
    

    【讨论】:

      猜你喜欢
      • 2017-07-03
      • 2017-09-20
      • 2020-02-04
      • 2013-12-08
      • 2017-07-17
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多