【问题标题】:Mongodb group and project operatorsMongodb集团和项目运营商
【发布时间】:2013-03-23 02:38:45
【问题描述】:

我正在尝试使用聚合框架通过 php 驱动程序按“group_name”分组并选择字段“group_name”和“group_id”:

Array
(
    [$project] => Array
        (
            [group_name] => 1
            [group_id] => 1
        )

    [$group] => Array
        (
            [_id] => $group_name
            [total_sum] => Array
                (
                    [$sum] => 1
                )

        )

)

我收到了这个:[errmsg] => exception: A pipeline stage specification object must contain exactly one field. 但是,当我只使用 $project$group 运算符时,它工作得很好。

【问题讨论】:

标签: php mongodb mongodb-query


【解决方案1】:

问题是您将 $project 和 $group 组合在一起。

你的数组应该看起来更像

{
  $project: {
    group_name: 1,
    group_id: 1
  },
},
{   
  $group:{
    _id:{
      group_name:'$group_name',
    },
    total_sum:{$sum:1}
  }
}    

【讨论】:

    【解决方案2】:

    您需要重新格式化并使用逗号作为分隔符。这是一个管道,因此它一次接收每个项目。

    这个我没试过,但是试试:

    array
    (
    array(
    array(
        '$project' => array(
            "group_name" => 1,
            "group_id"   => 1,
        )
    ),
    
    array(
        '$group' => array(
            "_id" => array("group_name" => '$group_name'),
            "total_sum" => array('$sum' => 1),
        ),
    )
    )
    

    【讨论】:

    • 我在代码中使用了逗号。为了简单起见,这只是输出。为什么要在另一个阵列上放置一个额外的阵列?不,没有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2013-05-30
    • 2017-02-12
    相关资源
    最近更新 更多