读取文件并在Ubuntu中插入mongo中的Json对象
问题描述:
我想读取一个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
答
输入数据看起来并不像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))
如果我直接使用:nodeInfo.insert_one({“名”:“A”}),它工作正常,但在循环field = {“name”:“x”}。并且它不在循环中工作。 – aditya