2016-02-28 33 views
-1

我想读取一个JSON文件并将它的每个文档插入到Python中的mongodb中。读取文件并在Ubuntu中插入mongo中的Json对象

代码是:

#!flask/bin/python 
import json; 
import csv; 
import bson; 


from pymongo import MongoClient 
#connect to database 
c = MongoClient('localhost',27017) 
db = c.wsn 

nodeInfo = db.nodeInfo; 
table = db.table; 


limit = 0; 
skip = 0; 
results = []; 


#To be able to read csv formated files, we will first have to import the 
#csv module. 
with open('data.csv', 'rb') as f: 
reader = csv.reader(f) 
obj = []; 
for row in reader: 
for field in row: 
    print(field); 
     nodeInfo.insert_one(field); 


File data is like : 
{"name" : "A"} 
{"name" : "B"} 
{"name" : "C"} 

我收到此错误:

TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping

+0

如果我直接使用:nodeInfo.insert_one({“名”:“A”}),它工作正常,但在循环field = {“name”:“x”}。并且它不在循环中工作。 – aditya

回答

0

输入数据看起来并不像csv可言,不知道为什么您使用csv模块读取它。

看起来你在文件的每一行都有JSON字符串。读取文件中的行由行,与json.loads()加载并装入:

import json 

with open('input_file.txt', 'rb') as f: 
    for row in f: 
     nodeInfo.insert_one(json.loads(row))