我希望重组我的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"
}
What I've try
我试过使用MongoDB的聚合功能,但因为有多个"itemName"字段,它将把它们都添加到一个数组中——而不是在每个文档中添加一个数组。
db.collection.aggregate([
{$Project:{
itemName: "$itemsList.itemName",
itemID: "$itemsList.otherID",
pageName: "$pageName"
}},
{$out: "myNewCollection"}
])
我也试过使用PyMongo 3。X循环遍历文档的字段并保存为新文档,但尚未成功。
实现方法
我是开放使用MongoDB的聚合功能,如果它可以移动这些项目到自己的文档,或Python脚本(3.x) -或任何其他手段,你认为可以帮助。
提前感谢您的帮助!
你只需要一个$unwind
来" break ";数组。然后你可以做一些数据整理和输出到你的集合。
请注意,因为您没有指定_id
的确切需求。你可能需要额外的处理。下面的演示使用本地_id
生成,它将自动分配目标。
db.collection.aggregate([
{
"$unwind": "$itemsList"
},
{
"$project": {
"_id": 0,
"itemName": "$itemsList.itemName",
"itemID": "$itemsList.myID",
"pageName": "$pageName"
}
},
{
$out: "myNewCollection"
}
])
这是Mongo游乐场供您参考。