【问题标题】:find_and_modify with upsert using Python-EVE使用 Python-EVE 使用 upsert 查找和修改
【发布时间】:2015-03-24 13:13:08
【问题描述】:

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

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

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

附: eve 提供了一些不错的功能,例如文档版本和元数据(_created、_updated 等)

【问题讨论】:

  • 你有什么问题?

标签: python rest pymongo eve


【解决方案1】:

upsert 支持现在是upcoming release 的一部分。

一个人不必做任何不同的事情。该功能默认为“开启”。因此,如果用户尝试PUT 一个不存在的项目,则会创建一个新项目。载荷中发送的id 字段将被忽略。

如果用户不想要此功能,则用户需要将UPSERT_ON_PUT 显式设置为False。现在,用户恢复了“旧”行为。即当用户尝试PUT 不存在的项目时,404 被返回。

【讨论】:

  • 谢谢。一个多小时以来,我一直在努力寻找答案。
  • 嘿 Vaze,即使将 UPSERT_ON_PUT 设置为 TRUE,我仍然收到 404。在不存在的项目上发送 PUT 请求时,url 应该是什么?
猜你喜欢
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多