最初の警告: 私はドキュメント データベースにまったく慣れていないので、すべての「理解」はドキュメントとブログの投稿から得たものであり、これが私の最初の実践的な作業です。
私は次のことを達成したい:
- さまざまな種類のドキュメントを保存し、ドキュメントに関するいくつかのメタデータを管理します。
- 次の方法でデータベースにクエリを実行します。
- メタデータ
- メタデータとドキュメントの属性
- 特定のドキュメント タイプのメタデータ
- ドキュメント全体をロードせずにメタデータを更新します。
私の理解では、ここには 2 つのオプションがあります。
ドキュメントと一緒にメタデータを保存します。
public class Metadata
{
public DateTime ValidFrom { get; set;}
public DateTime? ValidTo { get; set;}
}
public class DocumentWithMetadata<T>
{
public T Document { get; set;}
public Metadata Metadata { get; set;}
}
メタデータ属性を含むインデックスを作成しLiveProjections
、ドキュメント全体を読み込まずにドキュメントのメタデータを読み込むために使用します。メタデータの更新には、PATCH を使用します。ドキュメントによると..."is considered to be an expert feature and generally should not be used as a general purpose solution. If you have reached a scenario where you are considering using this, you might want to recheck your data model and see if it can be optimized to prevent usage of the Patching API"
もう 1 つのオプションは、メタデータをスタンドアロン ドキュメントとして保存することです。
public class Metadata
{
public DateTime ValidFrom { get; set;}
public DateTime? ValidTo { get; set;}
}
public class DocumentWithMetadata<T>
{
public T Document { get; set;}
public string MetadataId { get; set;}
}
このアプローチでは、この機能を使用してRelated Document Indexing
、メタデータ属性をドキュメントのインデックスに「持ち上げる」ことができます。
タイプT1
Raven のドキュメントが というコレクションを作成する場合、すべてのメタデータが 1 つのコレクションにある場合、T1 ドキュメントのメタデータのみDocumentWithMetadataOfT1
を照会するにはどうすればよいでしょうか?
ドキュメント タイプ プロパティをメタデータに追加したり、関係を反転したりするなど、他のいくつかのアプローチを考えましたが、それらはすべてハックのようです。
もっと良い方法があるに違いない..かどうか?