我已经看过py-couchdb的文档。我还看到了一些用于从数据库中删除文档的js函数,所以我尝试为我的沙发数据库重新创建它们。插入一些数据后(在csv中为1.2gb,在数据库中为~12gb,我想知道为什么......)我试图对数据集进行一些查询。
选择还可以。但是,当我尝试删除特定文档时,查询无法按预期工作。以下是查询:
map_func = "function(doc) { if (doc['Year'] == 2015) emit(doc._id, null);}"
map_func_2 = "function(doc) { if (doc['Year'] == 2015) emit(null, doc._rev);}"
map_func_3 = "function(doc) { if (doc['Year'] == 2015) emit(doc._deleted='true',null);}"
map_func_4 = "function(doc) { if (doc['Year'] == 2015) emit(doc.deleted='true',null);}"
map_func_5 = "function(doc) { if (doc['Year'] == 2015) emit(doc.deleted=true,null);}"
map_func_6 = "function(doc) { if (doc['Year'] == 2015) emit(doc._deleted:'true',null);}"
然后我调用了每个函数并检查了文档是否被删除(来自map_func)。
print "Quering for Deleting Year = 2015"
t = time.time()
db.temporary_query(map_func_3)
print float(time.time() - t)
print "Quering for Year = 2015"
t = time.time()
print len(list(db.temporary_query(map_func)))
print float(time.time() - t)
但即使他们中的任何一个实际上都没有删除或隐藏指定的文档。我还尝试了另一种方法,从python中删除。
for doc in db.all(as_list=True):
if doc['Year'] == 2015:
db.delete(doc)
这里的问题是Database.all()函数缓存整个数据并且我得到内存溢出错误。