HHVM MongoDb 聚合似乎不起作用
HHVM MongoDb aggregation seems like it doesn't work
我在 hhvm 上有一些 php 脚本 运行
我正在尝试从 MongoDB 3.2 中的 collection 获取数字字段的最大值
这是我的聚合管道
$mongo = new \MongoDB\Driver\Manager(MONGODB_HOST);
$myCollection = new \MongoDB\Collection($mongo, "mydb.mycollection");
$pipeline = [
[
'$group' => [
'_id' => 'group_field',
'slId' => ['$max' => '$saleId']
],
]
];
$doc = $myCollection->aggregate($pipeline);
此管道在 mongo shell 中完美运行,但来自 php $doc 包含我的 collection 中的所有文档,并且没有 $group 应用于它们
也许有人可以帮我解决这个问题?
聚合操作正在返回您集合中的所有文档,因为您为分组键指定了一个常量值,字符串 group_field
。您需要在 _id
键值中使用 $
字符作为组字段的前缀。因此,例如,如果您的按键分组是 name
字段,您可以将聚合管道重写为
$mongo = new \MongoDB\Driver\Manager(MONGODB_HOST);
$myCollection = new \MongoDB\Collection($mongo, "mydb.mycollection");
$group_field = '$name';
$pipeline = [
[
'$group' => [
'_id' => $group_field,
'slId' => ['$max' => '$saleId']
],
]
];
$doc = $myCollection->aggregate($pipeline);
感谢 chridam 在这里的回答。
我不知道,但也许这是某种魔法
所以,chridam 的回答帮助了我 $group,所以最后我的结果按 $group_field 分组。但是 slid 仍然不存在。所以,这就是我所做的并且它有所帮助:
$f = '$group_field';
$sl = ['$max' => '$saleId'];
$pipeline = array(
array(
'$group' => array(
'_id' => $f,
'slId' => $sl
),
)
);
我在 hhvm 上有一些 php 脚本 运行 我正在尝试从 MongoDB 3.2 中的 collection 获取数字字段的最大值 这是我的聚合管道
$mongo = new \MongoDB\Driver\Manager(MONGODB_HOST);
$myCollection = new \MongoDB\Collection($mongo, "mydb.mycollection");
$pipeline = [
[
'$group' => [
'_id' => 'group_field',
'slId' => ['$max' => '$saleId']
],
]
];
$doc = $myCollection->aggregate($pipeline);
此管道在 mongo shell 中完美运行,但来自 php $doc 包含我的 collection 中的所有文档,并且没有 $group 应用于它们 也许有人可以帮我解决这个问题?
聚合操作正在返回您集合中的所有文档,因为您为分组键指定了一个常量值,字符串 group_field
。您需要在 _id
键值中使用 $
字符作为组字段的前缀。因此,例如,如果您的按键分组是 name
字段,您可以将聚合管道重写为
$mongo = new \MongoDB\Driver\Manager(MONGODB_HOST);
$myCollection = new \MongoDB\Collection($mongo, "mydb.mycollection");
$group_field = '$name';
$pipeline = [
[
'$group' => [
'_id' => $group_field,
'slId' => ['$max' => '$saleId']
],
]
];
$doc = $myCollection->aggregate($pipeline);
感谢 chridam 在这里的回答。 我不知道,但也许这是某种魔法 所以,chridam 的回答帮助了我 $group,所以最后我的结果按 $group_field 分组。但是 slid 仍然不存在。所以,这就是我所做的并且它有所帮助:
$f = '$group_field';
$sl = ['$max' => '$saleId'];
$pipeline = array(
array(
'$group' => array(
'_id' => $f,
'slId' => $sl
),
)
);