Mongo聚合/分组查询

时间:2016-08-15 19:39:54

标签: mongodb mongodb-query aggregation-framework

我有这种形式的记录:

{
    "_id" : ObjectId("57993e64498e9bebb535154f"),
    "fooKey" : "123|a|b|c|||d",
    "locationId" : 1,
    "type" : "FOO"
}

{
    "_id" : ObjectId("579e0a3d498e9bebb545ff96"),
    "fooKey" : "123|x|y|z|||v",
    "locationId" : 1,
    "type" : "FOO"
}

{
    "_id" : ObjectId("57a5443b498e381a40a26afb"),
    "fooKey" : "123|a|b|c|||d",
    "locationId" : 2,
    "type" : "FOO"
}

{
    "_id" : ObjectId("57a63fef498e381a40a60347"),
    "fooKey" : "123|x|y|z|||v",
    "locationId" : 2,
    "type" : "FOO"
}

{
    "_id" : ObjectId("579ab3ce498e9538125052ca"),
    "fooKey" : "456|h|j|j|||k",
    "locationId" : 2,
    "type" : "BAR"
}

我浏览了文档,这看起来很复杂,因为我今天需要这个(而且我不是Mongo的专家)。我需要一个聚合查询(仅适用于带有“type”:“FOO”的记录)来返回按以下方式分组的组:

  • “fooKey”字段中以竖线分隔的字符串中的第一个字段(例如“123”
  • locationId

然后将类型字段的结果计数(特别是等于“FOO”的位数)大于1。

根据上面的记录,我需要在组中返回的记录1和2以及在组中聚集的记录3和4的内容......以及组大小的计数。

预期输出

这样的事情:

{ 
    "foo": "123", 
    "locationId": 1, 
    "type": "FOO", 
    "total": 2 
}, 
{ 
    "foo": "123", 
    "locationId": 2,
    "type": "FOO", 
    "total": 2 
} 

0 个答案:

没有答案