2016-03-22 10 views

答えて

2

データベースのすべてのデータをトラバースする必要があるため、実際にDatalogクエリを使用することはできません。

エンティティIDを指定すると、Peerライブラリのpart関数を呼び出すことで、そのパーティションを取得できます。

データベース上でfilterを使用すると、それらのデータのみのビューを持つことができます。ここではClojureの例です:

(defn part-db 
    "Given a db and a partition entity id, 
    returns a view of the db with only the datoms which entities are of this partition." 
    [db part] 
    (d/filter db (fn [_ ^Datom datom] 
       (-> datom .e d/part (= part)) 
       ))) 

それの名前(例えば:my.partitions/part1)からパーティションのエンティティIDを確認するには、例えばエンティティとしてそれを解決することができます

(def my-part-id (:db/id (d/entity mydb :my.partitions/part1))) 

ここから、次のことができます。(d/datoms (part-db mydb my-part-id) :eavt)

:インデックスを使用してデータベースの

  1. 一覧すべてdatoms 210

  2. データログを使用してフィルタリングされたデータベースを照会します。

  3. ...他にもデータベースの価値があります。

あなたが本当にすべて datomsを取得したい場合、あなたは履歴データベースにこれをやってみたいことがあります。

関連する問題