【发布时间】:2016-11-03 14:38:28
【问题描述】:
我正在尝试获取具有相同电子邮件地址的用户数量。
我已经关注了MongoCollection Aggregate 的 php 文档。我还将我的查询与 stackoverflow 上的其他查询进行了比较。据我所知,我的管道与示例中的管道匹配。然而我得到了错误:
exception: pipeline element 0 is not an object
我认为是 $group 元素,它是一个对象(一旦转换为 mongo 使用的 json 格式,不是吗?
$pipeline = array(
array(
'$group' => array(
'_id' => array( 'email' => '$email' ),
'uniqueIds' => array( '$addToSet' => '$_id' ),
'count' => array( '$sum' => 1 )
)
),
array(
'$match' => array(
'count' => array( '$gt' => 1 )
)
)
);
$options = array(
'allowDiskUse' => true
);
$results = $mongo->users_collection->aggregate( $pipeline, $options );
我做错了什么?我什至尝试从 php.net 运行查询,我当然希望没有结果,但它导致了同样的错误!?
EDIT 原来是我allowDiskUse,但如果我从函数中删除$options,我会收到一个错误,告诉我要使用它。
谢谢
【问题讨论】:
-
你在这一行有错别字
'_id' => array( 'email' => '$email', ),只需去掉第一个逗号出现(,)并重写代码以显示'_id' => array( 'email' => '$email' ), -
谢谢,虽然没有解决问题:(
标签: php mongodb mongodb-query aggregation-framework