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

问题描述

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