【发布时间】:2013-01-12 03:52:48
【问题描述】:
我有一个带有集合“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
我正在尝试更新所有出生大于一的文档,
所以我用 col.update({'birth':{'$gt':1}},{'$set':{'death':'near'}},{'multi':True}) 替换 some_operation 我得到错误: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 任何线索我哪里出错了? 非常感谢。
编辑: 文档说: 更新(规范,文档[,upsert=假[,操作=假[,安全=无[,多=假[,检查键=真[,**kwargs]]]]]])
这是否意味着:如果我想使用 'multi'=True,我必须强制为它之前的任何内容(更新插入、操作、安全)定义值?
此外,对于删除,它说: 删除([spec_or_id=None[, safe=None[, **kwargs]]]) here提到的“justOne”在哪里??
【问题讨论】:
标签: pymongo