Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回错误结果的MongoDB聚合错误_Mongodb_Aggregation - Fatal编程技术网

返回错误结果的MongoDB聚合错误

返回错误结果的MongoDB聚合错误,mongodb,aggregation,Mongodb,Aggregation,我有这样的json对象 { "_id": "5c2e811154855c0012308f00", "__pclass": "QXRzXFByb2plY3RcTW9kZWxcUHJvamVjdA==", "id": 44328, "name": "Test project via postman2//2", "address": "some random address", "area": null, "bidDate": null,

我有这样的json对象

{
    "_id": "5c2e811154855c0012308f00",
    "__pclass": "QXRzXFByb2plY3RcTW9kZWxcUHJvamVjdA==",
    "id": 44328,
    "name": "Test project via postman2//2",
    "address": "some random address",
    "area": null,
    "bidDate": null,
    "building": {
        "name": "Health Care Facilities",
        "type": "Dental Clinic"
    },
    "collaborators": [],
    "createdBy": {
        "user": {
            "id": 7662036,
            "name": "Someone Here"
        },
        "firm": {
            "id": 2520967,
            "type": "ATS"
        }
    },
    "createdDate": "2019-01-03T21:39:29Z",
    "customers": [],
    "doneBy": null,
    "file": null,
    "firm": {
        "id": 1,
        "name": "MyFirm"
    },
    "leadSource": {
        "name": "dontknow",
        "number": "93794497"
    },
    "location": {
        "id": null,
        "city": {
            "id": 567,
            "name": "Bahamas"
        },
        "country": {
            "id": 38,
            "name": "Canada"
        },
        "province": {
            "id": 7,
            "name": "British Columbia"
        }
    },
    "modifiedBy": null,
    "modifiedDate": null,
    "projectPhase": {
        "id": 1,
        "name": "pre-design"
    },
    "quotes": [{
        "id": 19,
        "opportunityValues": {
            "Key1": 100,
            "Key2 Key2": 100,
            "Key3 Key3 Key3": 200,
    }
    }],
    "specForecast": [],
    "specIds": [],
    "tags": [],
    "valuation": "something"
}
我试图在MongoDB中使用此查询进行聚合。我的聚合键有4级深,还包含空格。在所有在线示例中,我都看到了第一级的聚合。查看在线代码,我尝试用我的第四级深键重新迭代相同的代码

db.mydata.aggregate([
  {$match: {"id": 44328 } } ,
  {$group: { _id: "$quotes.id",
    totalKey2:{ $sum: "$quotes.opportunityValues.Key2 Key2"},
    totalKey3:{ $sum: "$quotes.opportunityValues.Key3 Key3 Key3"}
  }
  }
]);
这应该会回来

_id    totalKey2   totalKey3
 0 19    100         300
但它正在回归

_id    totalKey2   totalKey3
 0 19      0         0

我做错了什么?

虽然不建议在Mongo中的字段名中使用空格,但它可以正常工作

查询的问题是“quotes”是一个数组,在对其进行分组之前,应该首先将其展开

这与预期的效果一样:

db.mydata.aggregate([
  { $match: { "id": 44328 } } ,
  { $unwind: "$quotes" },
  { $group: { _id: "$quotes.id",
    totalKey2:{ $sum: "$quotes.opportunityValues.Key2 Key2" },
    totalKey3:{ $sum: "$quotes.opportunityValues.Key3 Key3 Key3" } }
  }
]);

注意,totalKey3将根据json数据返回200,而不是300。非常感谢Paulo。工作如期进行。