我想更新mongo集合中的数千个文档.我想使用ObjectId找到它们,然后应该更新哪个文档匹配.我的更新对于所有文档都是相同的.我有ObjectId列表.对于列表中的每个ObjectId,mongo应找到匹配的文档并将该文档的"isBad"键更新为"N"
ids = [ObjectId('56ac9d3fa722f1029b75b128'), ObjectId('56ac8961a722f10249ad0ad1')]
bulk = db.testdata.initialize_unordered_bulk_op()
bulk.find( { '_id': ids} ).update( { '$set': { "isBad" : "N" } } )
print bulk.execute()
Run Code Online (Sandbox Code Playgroud)
这给了我结果:
{'nModified': 0, 'nUpserted': 0, 'nMatched': 0, 'writeErrors': [], 'upserted': [], 'writeConcernErrors': [], 'nRemoved': 0, 'nInserted': 0}
Run Code Online (Sandbox Code Playgroud)
这是预期的,因为它试图将"_id"与列表匹配.但我不知道该怎么办.
我知道如何单独更新每个文档.我的列表大小约为25000.我不想单独拨打25000个电话.我的收藏中的文件数量更多.我使用的是python2,pymongo = 3.2.1.
我在django中使用python日志记录,我想将错误记录到var/log文件夹中.我收到此错误:
Unable to configure handler 'exception_logs': [Errno 2] No such file or directory: '/var/log/exceptions.log'
Run Code Online (Sandbox Code Playgroud)
下面是我的代码片段 settings.py
'handlers': {'exception_logs': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'formatter': 'simple',
'filename': '/var/log/exceptions.log',
},
},
Run Code Online (Sandbox Code Playgroud) django ×1
logging ×1
mongodb ×1
pymongo ×1
pymongo-3.x ×1
python ×1
python-2.7 ×1
python-3.x ×1