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