mongoDB中有没有一种有效的方法来获得组合的结果文档



我在一个使用mongoDB的项目中面临优化问题。我有一个具有以下结构的集合(ID是伪造的,以提高可读性(:

收藏"变量":

{ "_id": ObjectId("001"), "customer": ObjectId("100"), "variable": "a", "value": "2" }
{ "_id": ObjectId("002"), "customer": ObjectId("100"), "variable": "b", "value": "7" }
{ "_id": ObjectId("003"), "customer": ObjectId("100"), "variable": "c", "value": "1" }
{ "_id": ObjectId("004"), "customer": ObjectId("200"), "variable": "a", "value": "5" }
{ "_id": ObjectId("005"), "customer": ObjectId("200"), "variable": "a", "value": "3" }

每当我想知道客户的所有变量和值时,我都会查询。。。

{ "customer": ObjectId("100") }

检索适当的变量:

{ "_id": ObjectId("001"), "customer": ObjectId("100"), "variable": "a", "value": "2" }
{ "_id": ObjectId("002"), "customer": ObjectId("100"), "variable": "b", "value": "7" }
{ "_id": ObjectId("003"), "customer": ObjectId("100"), "variable": "c", "value": "1" }

现在我的问题是:是否可以将此结果作为一个文档而不是多个文档?所以我希望的结果应该是这样的:

{ "variables": [
{ "variable": "a", "value": "2" }, 
{ "variable": "b", "value": "7" }, 
{ "variable": "c", "value": "1" } 
] }

我很期待你的想法,因为我已经玩了很多投影和聚合,但没有找到一个好的解决方案。提前感谢!

示例查询:

db.getCollection('variables').aggregate([
{
$group: {
_id: '$customer',
entries : {$push: '$$ROOT'}
},
},
]);

这会给你想要达到的结果。

[
{
"_id" : "100",
"entries" : [ 
{
"_id" : "001",
"customer" : "100",
"variable" : "a",
"value" : "2"
}, 
{
"_id" : "002",
"customer" : "100",
"variable" : "b",
"value" : "7"
}, 
{
"_id" : "003",
"customer" : "100",
"variable" : "c",
"value" : "1"
}
]
},
{
"_id" : "200",
"entries" : [ 
{
"_id" : "004",
"customer" : "200",
"variable" : "a",
"value" : "5"
}, 
{
"_id" : "005",
"customer" : "200",
"variable" : "a",
"value" : "3"
}
]
}
]

最新更新