mongodb - 使用 Compass 的 Mongo DB 聚合 - 使用变量作为键名
问题描述
我正在尝试将一组对象映射到一个新的对象数组。数组中的对象示例:
{
k:"Zip code"
v:{
questionId:"596080353"
question:"In which ZIP code do you currently reside?"
answer:"97213"
}
}
我希望最终的对象是:
{
"Zip code": "97213"
}
我无法将 k 设置为新对象中的键名。有谁知道如何在 mongo 聚合中使用变量作为键名?
解决方案
将数组转换为单个文档;数组必须是:
以以下格式塑造您的数据
[ { "k": "Zip code", "v": "97213"}, { "k": "Zip code", "v": 97212 } ]
示例 1 - https://mongoplayground.net/p/AXKHsZf-Qzy
db.collection.aggregate([
{ $set: { doc: [ { k: "$k", v: "$v.answer" } ] } },
{ $set: { doc: { "$arrayToObject": "$doc" } } }
])
示例 2 - https://mongoplayground.net/p/Vm1DwHVb9KY
db.collection.aggregate([
{ $unwind: "$zip" },
{ $addFields: { doc: { $arrayToObject: [ [ { k: "$zip.k", v: "$zip.v" } ] ] } } },
{ $group: { _id: "$_id", zips: { $push: "$doc" } } }
])
推荐阅读
- php - wordpress 管理面板,如何防止用户删除类别?
- javascript - 尽量减少浏览器刷新的网页设计实践
- c# - EF Core DbSet AddAsync 方法:是否应该在 100% 的情况下使用异步方法?
- reactjs - 使用 react 和 typescript 通过 mobx 更新 Todo 列表
- python - 如何使用 Pyspark 中的 Graphframes 和 Spark Dataframe 中的原始数据获取连接的组件?
- ios - SwiftUI mode.wrapped.value() 提升 scrollView
- c# - ASP.NET Visual Studio - 仅在存在下一页时才转到下一页
- apache - 使用 xampp 和 ngrok 访问本地虚拟主机时禁止访问
- command - How can I specify a dataset according to a certain requirement?
- javascript - 如何使用可移动对象创建模板创建者?