Я новичок в Mongodb, и мне было поручено извлечь данные из mongoDB, создать csv и загрузить его в базу данных Oracle. Ниже данные в Mongodb
{{
"_id":"69ajdslsdfdksjfef9",
"col1":"456780",
"refNum":"ref001"
}
{
"clients":{
"CLI_1": "9876547390",
"CLI_2": "fsdfasl"
}
{"names":[
{
"first":"dfsakfj",
"middle":"hgfgas",
"last":"komdssdfsd"
},
{
"first":"dfskdajf",
"middle": "fgjfgjfl",
"last": "ghfghsdklfg"
}]}
second row from collection
{{
"_id":"69ajdslsdfdksjfef9",
"col1":"456780",
"refNum":"ref001"
}
{
"clients":{
"CLI_1": "9876547390",
"CLI_2": "fsdfasl"
}
{"names":[
{
"first":"dfsakfj",
"middle":"hgfgas",
"last":"komdssdfsd"
}]}
Я использую утилиту pymongo для запроса и создания фрейма данных перед созданием файла csv. Тем не менее, я могу создать фрейм данных, но не могу правильно анализировать «имена», поскольку они несовместимы при сравнении между строками. Может ли кто-нибудь поделиться, как разобрать и создать csv с полями _id, first, middle, last
Благодарю вас
Существует конвейер агрегации mongodb с именем $unwind, который может помочь вам с задачей выравнивания массива имен, чтобы он подходил для вывода csv следующим образом:
db.collection.aggregate([
{
$unwind: "$names"
},
{
$project: {
_id: 1,
first: "$names.first",
middle: "$names.middle",
last: "$names.last"
}
}
])// _id, first, middle, last