微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果集合中的前一个文档包含某个值,如何不创建新文档?

如何解决如果集合中的前一个文档包含某个值,如何不创建新文档?

我正在使用 python 库以编程方式在集合中创建文档:

user = client.query(q.create(q.collection("my_collection"),{
             "data": {
                     "UTC_datetime": str(datetime.Now(pytz.UTC)),"item_one": str(value_one),"item_two": str(value_two),"item_three": str(value_three)
         }
     }))

在满足某些条件时,python 应用程序会再次执行。

如果下一次应用执行中的 item_two 再次具有相同的值,我希望创建新文档。

如何制作上述查询来执行此操作?

目前,我正在阅读上一个文档,从 item_two提取值并执行 if/else 语句以继续存储新文档或 sys.exit()

我确信有一个更优雅的解决方案基于 Fauna 的逻辑而不是 Python 的逻辑,但是,我无法实现这一点。

解决方法

您可以为 item_two 创建唯一索引 (https://docs.fauna.com/fauna/current/api/fql/indexes) 以确保不会出现重复项。您可能还想要一个 upsert 实现

https://forums.fauna.com/t/multi-document-upsert/488/3

https://forums.fauna.com/t/does-fauna-supports-upserts/208

q.If(
   q.Exists(q.Match(q.Index('unique_item_two'),str(value_two))),q.Update(...),q.Create(...)
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。