【发布时间】:2021-12-07 02:54:31
【问题描述】:
我正在寻找重组我的 MongoDB 集合,但未能这样做。我对它很陌生,正在寻求帮助。我正在努力访问移动“itemsList”字段中的数据。
我的收藏文档目前的结构如下:
{
"_id": 1,
"pageName": "List of Fruit",
"itemsList":[
{
"myID": 101,
"itemName": "Apple"
},
{
"myID": 102,
"itemName": "Orange"
}
]
},
{
"_id": 2,
"pageName": "List of Computers",
"itemsList":[
{
"myID": 201,
"itemName": "MacBook"
},
{
"myID": 202,
"itemName": "Desktop"
}
]
}
最终结果
但我希望对数据进行重组,以便“itemName”的值是它自己的文档。
我还想将“myID”的名称更改为“itemID”。
并将新文档保存到另一个集合中。
{
"_id": 1,
"itemName": "Apple",
"itemID": 101,
"pageName": "List of Fruit"
},
{
"_id": 2,
"itemName": "Orange",
"itemID": 102,
"pageName": "List of Fruit"
},
{
"_id": 3,
"itemName": "MacBook",
"itemID": 201,
"pageName": "List of Computers"
},
{
"_id": 4,
"itemName": "Desktop",
"itemID": 202,
"pageName": "List of Computers"
}
我的尝试
我曾尝试使用 MongoDB 的聚合功能,但由于每个文档中有多个“itemName”字段,它会将它们都添加到一个数组中 - 而不是每个文档中的一个。
db.collection.aggregate([
{$Project:{
itemName: "$itemsList.itemName",
itemID: "$itemsList.otherID",
pageName: "$pageName"
}},
{$out: "myNewCollection"}
])
我也尝试过使用 PyMongo 3.x 循环遍历文档的字段并保存为新文档,但没有成功。
实现方式
我愿意使用 MongoDB 的聚合功能,如果它可以将这些项目移动到自己的文档或 Python 脚本 (3.x) - 或您认为可以提供帮助的任何其他方式。
提前感谢您的帮助!
【问题讨论】:
标签: python mongodb mongodb-query aggregation-framework pymongo