如何将 Mongo 查询数组结果转换为展平对象,键应为 _id
How to convert Mongo query array result into flatten object and key should be _id
如何将 mongo 查询结果转换为展平对象。
当前结果:
[
{
"_id": "61ef7e5497c9912ac1e56404",
"name": "Mark",
"age": 20,
"isMinor": true
},
{
"_id": "61ef7e5497c9912ac1e56404",
"name": "Sam",
"age": 22,
"isMinor": false
}
]
异常输出:
[
{
"61ef7e5497c9912ac1e56404": {
"_id": "61ef7e5497c9912ac1e56404",
"name": "Mark",
"age": 20,
"isMinor": true
},
"61ef7e5497c9912ac1e56404": {
"_id": "61ef7e5497c9912ac1e56404",
"name": "Sam",
"age": 22,
"isMinor": false
}
}
]
我想使用聚合查询本身来做到这一点。
我当前的查询:
Users.aggregate({$addField:{isMinor:{ $cond: [
{ $gt: ['$age', 20] },
true, false,
]}}})
$group
- 对文档进行分组并添加包含 key-value 对(键:id,值:文档)数组的 users
字段。这个阶段将return只有一个文件。
$replaceWith
- 用指定文档替换输入文档。此阶段将输出 key-value 对中的文档。
db.collection.aggregate([
// Previous stages
{
$group: {
_id: null,
users: {
$push: {
k: { $toString: "$_id" },
v: "$$ROOT"
}
}
}
},
{
"$replaceWith": {
$arrayToObject: "$users"
}
}
])
如何将 mongo 查询结果转换为展平对象。
当前结果:
[
{
"_id": "61ef7e5497c9912ac1e56404",
"name": "Mark",
"age": 20,
"isMinor": true
},
{
"_id": "61ef7e5497c9912ac1e56404",
"name": "Sam",
"age": 22,
"isMinor": false
}
]
异常输出:
[
{
"61ef7e5497c9912ac1e56404": {
"_id": "61ef7e5497c9912ac1e56404",
"name": "Mark",
"age": 20,
"isMinor": true
},
"61ef7e5497c9912ac1e56404": {
"_id": "61ef7e5497c9912ac1e56404",
"name": "Sam",
"age": 22,
"isMinor": false
}
}
]
我想使用聚合查询本身来做到这一点。
我当前的查询:
Users.aggregate({$addField:{isMinor:{ $cond: [
{ $gt: ['$age', 20] },
true, false,
]}}})
$group
- 对文档进行分组并添加包含 key-value 对(键:id,值:文档)数组的users
字段。这个阶段将return只有一个文件。$replaceWith
- 用指定文档替换输入文档。此阶段将输出 key-value 对中的文档。
db.collection.aggregate([
// Previous stages
{
$group: {
_id: null,
users: {
$push: {
k: { $toString: "$_id" },
v: "$$ROOT"
}
}
}
},
{
"$replaceWith": {
$arrayToObject: "$users"
}
}
])