【发布时间】:2015-06-24 11:22:55
【问题描述】:
以下上传方法应该批量上传到给定的 MongoDB 集合。它无一例外地成功运行,但数据没有反映在数据库中。不确定缺少什么? @丹尼尔罗斯曼
from pymongo import MongoClient
from pymongo.database import Database
from pymongo.collection import Collection
def upload(host, port, db_str, collection_str, src_dir):
# prepare connection to DB
client = MongoClient(host, port)
db = Database(client, db_str)
collection = Collection(db, collection_str)
# prepare bulk object
bulk = collection.initialize_ordered_bulk_op()
# iterate overall all data files and insert
for datafile in datafiles(src_dir):
try:
data = json.load(open(datafile))
bulk.insert(data)
except ValueError:
print "Upload failed for %s" % (datafile)
continue
bulk.execute()
【问题讨论】:
-
你确认
json.load(open(datafile))返回你期望它返回的对象了吗? -
bulk.execute() 返回的 BulkWriteResult() 对象是什么样的?是否有任何非零条目?
-
@Philipp 是的。对象很好。
-
@JacodeGroot nInserted 等于我插入的文档。以下是结果 { 'nModified':0, 'nUpserted':0, 'nMatched':0, 'writeErrors':[ ], 'upserted':[ ], 'writeConcernErrors':[ ], 'nRemoved':0, 'nInserted':100 }
-
dataa 上传到正确的数据库了吗?除非我遗漏了什么,否则这应该可以工作。
标签: mongodb python-2.7 pymongo bulkinsert