在我的mongoDB管道的$facet
阶段中,由于某些记录引用了相同的“ customer.id”,因此我需要根据“ customer.id”的唯一出现次数进行计数。我已经尝试过了:
"totalCustomers" : [ { $group : { "$customer.id" : { $sum: 1 } } } ]
...,但最终出现错误:“字段名称'$ customer'不能是运算符名称”。
我也尝试过:
"totalCustomers" : [ { "$group" : { "_id" : "$customer.id", "count" : { "$sum" : 1 }}} ]
...不会出错,但是可以给我所有记录,而不是所有这些记录的数字计数。
对我的数据集中的每个唯一“ $ customer.id”进行计数的语法是什么?我的理解是,我需要在$sum
或$group
阶段中使用$project
,但是尚不清楚它的外观。
为进一步澄清,如果我的数据结构如下:
[
{
id: '111',
someProp: <value>,
customer: { id: '222' }
},
{
id: '112',
someProp: <value>,
customer: { id: '222' }
}
]
...我应该以“ totalCustomers:1”结尾。
答案 0 :(得分:3)
您可以在两个步骤中完成该操作:
public function write(&$htmlTmpl)
{
$html_advanced_options = '<a href="#">My link</a>';
$html_advanced_options .= 'other html';
...
$tmpl_advanced_options = $htmlTmpl->createDocumentFragment();
$tmpl_advanced_options->appendXML( $html_advanced_options );
$nodeLine = $htmlTmpl->getElementsByTagName("hr")->item(0);
$parentNode = $htmlTmpl->getElementsByTagName("div")->item(0);
$parentNode->insertBefore( $section_advanced_options, $nodeLine );
$parentNode->insertBefore( $tmpl_advanced_options, $section_advanced_options );
}
这将创建一个包含所有[
{$group: {_id: null, customerIds: {$addToSet: '$customer.id'}}},
{$project: {uniqueCustomers: {$size: '$customerIds'}}}
]
的集合(从技术上讲是一个没有重复的数组)并获取其大小。