Mongoengine raw find_and_modify查询给出"必须更新或删除"例外

时间:2015-10-10 12:02:19

标签: django mongodb pymongo mongoengine

我正在使用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
        })

这里有什么问题?

2 个答案:

答案 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
            )