在mongodb中的replaceRoot之后如何进一步对对象进行分组

{
    "169v55": [
      {
        "code": "2001","active": true,"delist": false
      }
    ],"SLO1019jkf": [
      {
        "code": "MOUNTY2026","active": false,"delist": false,"createdAt": "2019-12-26T15:36:51.819Z"
      },{
        "code": "MOUNTY2027","createdAt": "2019-12-26T16:25:32.437Z"
      },{
        "code": "MOUNTY2054","createdAt": "2020-02-17T05:47:28.558Z"
      }
    ]
}

以上是替换newRoot后得到的结果。这是上面结果给出的我的分组代码

{
    $group: group
},{
    $project: {
      doc: "$doc",date: date,type: type
    }
},{
    $group: {
      _id: null,locations: {
        $push: {
          k: "$_id",v: "$doc"
        }
      }
    }
},{
    $replaceRoot: {
      newRoot: {
        $arrayToObject: "$locations"
      }
    }
}

现在,我需要再次将其归为有效并退出列表。所以,我想要的输出如下

{
  "169v55": {
    active: 1,inactive: 2
  },"SLO1019jkf": {
    active: 0,inactive: 3
  }
}

{ active: 1,inactive: 2 }上方表示activeinactive个文档各自数组的总数。

doraemon616 回答:在mongodb中的replaceRoot之后如何进一步对对象进行分组

我没有看到实际的输入文件。如果最上面的输出来自此管道,则在group阶段之前的两个文档看起来像(我无法告诉您React.useEffect(() => { const fetchData = async () => { const data = await fetchDataByCountry(country); setData(data); console.log(data); }; fetchData(); },[country]); // <- Execute useEffect body when country value is changed 曾经包含的内容)

type

{
    _id: "169v55",doc:{
        "code": "2001","active": true,"delist": false
      },type: unknown
}

因此,如果您要根据位置进行分组,则可以总结活动状态和非活动状态:

{
    _id: "SLO1019jkf",doc:{
        "code": "MOUNTY2026","active": false,"delist": false,"createdAt": "2019-12-26T15:36:51.819Z"
      },type: unknown
}

这将在单独的文档中为您提供每个位置的计数。如果您需要将它们实际上放在一个数组中,则可以像以前一样将其按空分组,但要推送计数而不是原始文档字段:

{$group:{
    _id:"$_id",active: {$sum:{$cond:[{$eq:["$active",true]},1,0]}},inactive: {$sum:{$cond:[{$eq:["$active",false]},0]}}
}}
本文链接:https://www.f2er.com/2578022.html

大家都在问