试试这个:
查询:
db.yourCollectionName.aggregate([{ $project: { _id: 0, idNameAsArray: { $split: [{ $concat: ["$id", ",", "$name"] }, ','] } } },
{ $group: { _id: '', arrayOfIdNameArrays: { $push: '$idNameAsArray' } } },
{ $project: { idNameObjs: { $arrayToObject: "$arrayOfIdNameArrays" } } },
{ $replaceRoot: { newRoot: '$idNameObjs' } }])
收集数据:
/* 1 */
{
"_id" : ObjectId("5e085452d3b84db1053c3c6e"),
"id" : "23",
"name" : "MyName"
}
/* 2 */
{
"_id" : ObjectId("5e085452d3b84db1053c3c6f"),
"id" : "24",
"name" : "MyName2"
}
结果:
/* 1 */
{
"23" : "MyName",
"24" : "MyName2"
}
参考: Aggregation-pipeline-operators