【问题标题】:How do I load a json file into mongoDB?如何将 json 文件加载到 mongoDB 中?
【发布时间】:2015-01-26 20:23:15
【问题描述】:

我有一个 json 文件,其中包含以下格式的一些信息:

{ "_id" : ObjectId("xxx"), "date_time" : ISODate("2014-06-11T19:16:45Z"), "name" : "AAA", "phone_no" : "111", "address" : "BBB", "categories" : "CCC" }  
{ "_id" : ObjectId("yyy"), "date_time" : ISODate("2014-06-11T19:16:44Z"), "name" : "EEE", "phone_no" : "222", "address" : "FFF", "categories" : "GGG" }  
{ "_id" : ObjectId("zzz"), "date_time" : ISODate("2014-06-11T19:16:46Z"), "name" : "HHH", "phone_no" : "333", "address" : "III", "categories" : "JJJ" }

我使用的代码是这样的:

db = pymongo.MongoClient().test  
path ='/home/files'  
for f in listdir(path):  
    filepath = path+'/'+f  
    data = []     
    for line in open(filepath):  
        try:  
            data.append(json.loads(line))  
        except:  
            pass  
    db.temp.insert(data)  

这会导致错误,指出不可能进行空批量写入。基本上,json.loads(line) 永远不会起作用。问题是json文件的格式吗?是否应该以其他方式声明变量“数据”?

如何将此文件加载到 mongoDB

【问题讨论】:

  • json 不知道 wtf 是 ObjectID 还是 ISODate ...它只能处理简单类型...如果您为这些类定义了序列化规则,您可以尝试使用 yaml 加载数据...或者您可以在该行中使用简单的字符串
  • 你只是想将JSON文件中的记录保存到mongo吗?为什么不直接使用 mongoimport? docs.mongodb.org/manual/reference/program/mongoimport

标签: python json mongodb


【解决方案1】:

json 不知道什么是 ObjectID 或 ISODate ...它只能处理简单类型...如果您已经为这些类定义了序列化规则,您可以尝试使用 yaml 加载数据...或者您可以只是在行中使用简单的字符串。

for line in open(filepath):
    line = re.sub("[a-zA-Z_]+\(([^)]+)\)","\\1",line)
    print json.loads(line)
    ... #do your thing

这将删除类调用 转换

{ "_id" : ObjectId("xxx"), "date_time" : ISODate("2014-06-11T19:16:45Z"), "name" : "AAA", "phone_no" : "111", "address" : "BBB", "categories" : "CCC" }  

{ "_id":"xxx", "date_time" : "2014-06-11T19:16:45Z", "name" : "AAA", "phone_no" : "111", "address" : "BBB", "categories" : "CCC" }  

你应该可以用 json 加载它

【讨论】:

    猜你喜欢
    • 2019-12-29
    • 2019-11-13
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多