我在电子商务风格平台上使用$ facet聚合。
对于这种情况,我有一个产品集合,产品架构包含许多字段。
我使用相同的聚合过程来获得所有必需的方面。 问题是,如果我能够通过操纵特定字段使用相同的$ facet \ $ bucket aggrigation来分组文档 - 例如 - 在产品架构中,我有releaseDate字段,它是Date(type)字段。
目前聚合查询如下所示:
let facetsBodyExample = {
'facetName': [
{ $unwind: `$${fieldData.key}` },
{ $sortByCount: `$${fieldData.key}` }
],
'facetName2': [
{ $unwind: `$${fieldData.key}` },
{ $sortByCount: `$${fieldData.key}` }
],
...,
...
};
let results = await Product.aggregate({
$facet: facetsBodyExample
});
文件看起来像
{
_id : 'as5d16as1d65sa65d165as1d',
name : 'product name',
releaseDate: '2015-07-01T00:00:00.000Z',
field1:13,
field2:[1,2,3],
field3:'abx',
...
}
我想按季度+年份创建自定义构面(群组),格式如“QQ / YYY'”,而不定义任何边界。
现在,我正在获得与日期完全匹配的组,我想将它们分组为四分之一年组,如果可能的话,在同一个$ facet聚合中。
查询我要自定义的日期字段的结果:
CURRENT:
{
relaseDate: [
{ "_id": "2017-01-01T00:00:00.000Z", "count": 26 },
{ "_id": "2013-04-01T00:00:00.000Z", "count": 25 },
{ "_id": "2013-07-01T00:00:00.000Z", "count": 23 },
...
]
}
DESIRED:
{
relaseDate: [
{ "_id": "Q1/2014", "count": 100 },
{ "_id": "Q2/2014", "count": 200 },
{ "_id": "Q3/2016", "count": 300 },
...
]
}
谢谢!