Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python在csv中为子对象指定自己的列以导出MongoDB数据?_Python_Mongodb_Python 3.x_Csv_Pymongo - Fatal编程技术网

如何使用python在csv中为子对象指定自己的列以导出MongoDB数据?

如何使用python在csv中为子对象指定自己的列以导出MongoDB数据?,python,mongodb,python-3.x,csv,pymongo,Python,Mongodb,Python 3.x,Csv,Pymongo,我对Python非常陌生,正在尝试将数据从MongoDB集合移动到CSV文档中(如果可能,需要使用Python,而不是mongoexport) 我使用Pymongo和CSV包将数据库中的数据导入CSV 这是我从MongoDB查询的数据结构: 主标识符-计算机名(父项):R2D2 详细信息-计算机详细信息(父级):操作系统(子级),所有者(子级) 我需要操作系统和所有者在CSV表中有自己的列,但它们一直位于名为计算机名的单列之下 这样子对象就可以有自己的列,而不是在父对象下分组了吗?我已经做过很多

我对Python非常陌生,正在尝试将数据从MongoDB集合移动到CSV文档中(如果可能,需要使用Python,而不是mongoexport)

我使用Pymongo和CSV包将数据库中的数据导入CSV

这是我从MongoDB查询的数据结构:

主标识符-计算机名(父项):R2D2

详细信息-计算机详细信息(父级):操作系统(子级),所有者(子级)

我需要操作系统所有者在CSV表中有自己的列,但它们一直位于名为计算机名的单列之下


这样子对象就可以有自己的列,而不是在父对象下分组了吗?

我已经做过很多次了。您将有一个循环使用pymongo迭代mongo查询。在循环的底端,您将使用csv模块写入csv文件的每一行。你的问题涉及到循环过程中发生了什么。 MongoDB语法最接近Java语言,它也适合Mongo中的“关联数组”对象,即JSON。Pymongo使这些东西更接近Python类型

因此,父对象将直接来自pymongo iterable,如果它们有子对象,将通过Python字典:

import csv
from pymongo import MongoClient

client = MongoClient(ipaddress, port)
db = client.MyDatabase
collection = db.mycollection   

f = open('output_file.csv', 'wb')
csvwriter = csv.writer(f) 

for doc in collection.find():
    computer_name = doc.get('Computer Name')
    operating_system = computer_name.get('Operating System')
    owner = computer_name.get('owner')
    csvwriter.writerow([operating_system, owner])
f.close()

当然,可能还有很多其他没有子元素的列也直接来自doc

请你能发布一个你的代码的例子吗?