gpt4 book ai didi

clojure - 在 Datomic 中,在没有撤回的情况下查询字段历史记录?

转载 作者:行者123 更新时间:2023-12-04 07:15:08 24 4
gpt4 key购买 nike

我想获取 Datomic 中特定字段的值历史记录。
我的直觉是用 (d/history)喜欢

(d/q '[:find ?entity ?field-val ?date ?tx
:in $
:where
[?entity :namespace/field ?field-val ?tx]
[?tx :db/txInstant ?date]]
(d/history (db/get-db)))
但是,此查询将复制大多数值,因为它列出了每个撤回以及每个值更新(每个 db/adddb/retract )。
我想也许我可以用事务查询数据,然后检查操作。但我找不到查询数据的方法。
  • (d/pull db '[*] tx-id)不包括数据。
  • 搜索引擎结果对诸如“查询数据原子交易数据”之类的关键字没有帮助
  • 搜索原子事务架构没有结果

  • 我可以用 tx-range ,但这似乎不合理。
    有什么更好的方法吗?

    最佳答案

    我找错地方了。历史查询提供了 history docs 中描述的额外隐藏位置值。 .
    所以任何 where 子句都可以包含 ?entity ?attribute ?value ?transaction ?operation .

  • ?操作适用于 :db/add和假 :db/retract

  • 所以,我想要的查询看起来像
    (d/q '[:find ?entity ?field-val ?date ?tx
    :in $
    :where
    [?entity :namespace/field ?field-val ?tx true] ;;ADDED TRUE
    [?tx :db/txInstant ?date]]
    (d/history (db/get-db)))

    关于clojure - 在 Datomic 中,在没有撤回的情况下查询字段历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68810613/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com