我有一个带有集合“testcol”的数据库“testdb”,如下所示:
{u'_id': ObjectId('50eeb8029b75941b9af614bd'), u'birth': 1}
{u'_id': ObjectId('50eeb82e9b75941bc820f22c'), u'birth': 2}
{u'_id': ObjectId('50eeb82e9b75941bc820f22d'), u'birth': 3}
{u'_id': ObjectId('50eeb82f9b75941bce96032c'), u'birth': 2}
{u'_id': ObjectId('50eeb82f9b75941bce96032d'), u'birth': 3}
代码如下:
m_connection = MongoClient(M.HOST,M.PORT)
col = m_connection['testdb']['testcol']
#some_operation
cursor = col.find()
for doc in cursor:
print doc
我试图更新所有出生大于一的文档,所以我将 some_operation 替换为col.update({'birth':{'$gt':1}},{'$set':{'death':'near'}},{'multi':True})
我得到错误:TypeError: upsert must be an instance of bool
同样,我只想删除所有出生为 2 0r 3 的文档中的一个。
我将 some_operation 替换为col.remove({'birth' : {'$in' : [2,3]}},{'justOne' : 1})
我得到错误:TypeError: Wrong type for safe, value must be a boolean
我尝试使用直接布尔值代替 {} 数组,但只有一个文档被更新,所有出生为 2 或 3 的文档都被删除。
以防万一它与版本有关:我有 pymongo-2.4.1 和 Python2.7 任何线索我哪里出错了?非常感谢。
编辑:文档说: update(spec, document[, upsert=False[,urgical=False[, safe=None[, multi=False[, check_keys=True[, **kwargs]]]]]])
这是否意味着:如果我想使用'multi'=True,我必须强制为它之前的任何东西(upsert、操纵、安全)定义值?
此外,对于删除,它说: remove([spec_or_id=None[, safe=None[, **kwargs]]])这里提到的“justOne”在哪里?