我正在尝试编写一个将文档从collection_one移到collection_two的函数。我遇到了一个奇怪的错误,计数没有加起来。
collection_one.count({})返回330万记录
移动所有文档后,collection_two.count({})
返回320万。
collection_one
中的每个文档都包含唯一的uuid run_id
。当我运行以下命令时,这些是输出:
collection_one.count({'run_id':{$ eq:'uuid'}}),我得到了320万
collection_one.count({'run_id':{$ ne:'uuid'}}),我得到0;
基本上,有10万条丢失的记录,这些记录仅显示为空计数。
我尝试通过pymongo并在shell中使用copyTo()以几种不同的方式移动文档。
for doc in source.find():
try:
target.insert(doc)
except:
print('Did not copy')
和批处理移动功能
for n in range(0, ceil_num_of_batches):
result = source.find(data_filter).limit(batch_size).skip(n*batch_size)
insert_queries = [InsertOne(doc) for doc in result]
try:
target.bulk_write(insert_queries)
except BulkWriteError as bwe:
logger.error(bwe.details)
这两者都会产生相同的错误。 copyTo()但是会复制全部330万,但已弃用。
Collection_two具有唯一索引,而collection_one没有。