如何在MongoDB中重组一个集合



我希望重组我的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游乐场供您参考。

相关内容

  • 没有找到相关文章

最新更新