使用Python-EVE使用upsert查找find_and_modify

时间:2015-03-24 13:13:09

标签: python rest pymongo eve

当您需要更新或插入时,有一个常见的用例。例如:

 obj = db['data'].find_and_modify(
        {
            'Name': data['Name'],
            'SourcePage': data['SourcePage'],
        },
        data,
        upsert=True
    )

当然可以将此请求拆分为GET然后PATCHINSERT ,但也许有更好的方式?

P.S。前夕提供了一些很好的功能,如文档版本和元数据(_created,_updated等)

1 个答案:

答案 0 :(得分:5)

upsert支持现已成为upcoming release的一部分。

一个人不必做任何不同的事情。该功能已打开""默认情况下。因此,如果用户尝试PUT不存在的项目,则将创建新项目。有效负载中发送的id字段将被忽略。

如果用户不需要此功能,则用户需要明确将UPSERT_ON_PUT设置为False。现在,用户获得了#34; old"行为回来了。即,当用户尝试PUT不存在的项目时,会返回404