Mongodb 聚合展开Mongo对象
我在MongoDB中有一个具有object类型的view属性的文档:Mongodb 聚合展开Mongo对象,mongodb,Mongodb,我在MongoDB中有一个具有object类型的view属性的文档: { "_id" : ObjectId("5c5adc896dbc05c93a8a0fc9"), "date" : ISODate("2019-02-06T00:00:00.000Z"), "partner_id" : 36, "partner_user_id" : 163, "partner_user_name" : "Adriano", "view" : { "
{
"_id" : ObjectId("5c5adc896dbc05c93a8a0fc9"),
"date" : ISODate("2019-02-06T00:00:00.000Z"),
"partner_id" : 36,
"partner_user_id" : 163,
"partner_user_name" : "Adriano",
"view" : {
"webbundlecontrollersecurecontroller" : 1,
"webbundlecontrollerclientcontroller" : 1,
"webbundlecontrollerordercontroller" : 6
}
}
我需要执行一个查询,返回如下内容:
{
"_id" : ObjectId("5c5adc896dbc05c93a8a0fc9"),
"date" : ISODate("2019-02-06T00:00:00.000Z"),
"partner_id" : 36,
"partner_user_id" : 163,
"partner_user_name" : "Adriano",
"controller" : "webbundlecontrollersecurecontroller"
"total": 1
},
{
"_id" : ObjectId("5c5adc896dbc05c93a8a0fc9"),
"date" : ISODate("2019-02-06T00:00:00.000Z"),
"partner_id" : 36,
"partner_user_id" : 163,
"partner_user_name" : "Adriano",
"controller" : "webbundlecontrollerclientcontroller"
"total": 1
},
{
"_id" : ObjectId("5c5adc896dbc05c93a8a0fc9"),
"date" : ISODate("2019-02-06T00:00:00.000Z"),
"partner_id" : 36,
"partner_user_id" : 163,
"partner_user_name" : "Adriano",
"controller" : "webbundlecontrollerordercontroller"
"total": 6
}
基本上将第一个文档上的视图对象属性转换为3个新对象。我尝试将聚合与展开一起使用,但不确定如何最好地执行此操作 我能够使用objectToArray进行查询以转换对象,然后展开并构建最终查询
db.pmm_page_view.aggregate(
[
{
$project: {
date: 1,
partner_id: 1,
partner_user_id: 1,
partner_user_name: 1,
view: { $objectToArray: "$view" }
}
},
{ $unwind: "$view" },
{
$project: {
date: 1,
partner_id: 1,
partner_user_id: 1,
partner_user_name: 1,
controller: "$view.k",
total: "$view.v"
}
}
]
)
我能够使用objectToArray进行查询以转换对象,然后展开并构建最终查询
db.pmm_page_view.aggregate(
[
{
$project: {
date: 1,
partner_id: 1,
partner_user_id: 1,
partner_user_name: 1,
view: { $objectToArray: "$view" }
}
},
{ $unwind: "$view" },
{
$project: {
date: 1,
partner_id: 1,
partner_user_id: 1,
partner_user_name: 1,
controller: "$view.k",
total: "$view.v"
}
}
]
)