我正在使用Django + mongoengine 我想在Bookscollection文档中更新书籍(嵌入文档)。我希望更新查询返回完整对象。因此我正在使用' find_and_modify'。但即使我使用更新或删除字段。我仍然会收到错误消息“必须更新或删除”#39; 这是我的代码片段 -
for book_id in book_list:
book_col = BookCollection._get_collection().find_and_modify({
'query': {'coll_id':book_coll_id,'book.book_id':book_id},
'update':{'$inc':
{'book.$.quantity' : 1}
},
'new':True
})
这里有什么问题?
答案 0 :(得分:1)
find_and_modify
采用关键字参数,这就是您收到该错误消息的原因。
for book_id in book_list:
book_col = BookCollection._get_collection().find_and_modify({
query={'coll_id':book_coll_id,'book.book_id': book_id},
update={'$inc': {'book.$.quantity' : 1}},
new=True
})
另外,您应该知道pymongo3.0中已弃用find_and_modify
,如果您的潜水员为find_one_and_update
或更新,则应使用pymongo 2.9。
答案 1 :(得分:1)
BookCollection._get_collection().find_and_modify(
query={'coll_id':book_coll_id,'book.book_id': book_id},
update={'$inc': {'book.$.quantity' : 1}},
new=True
)