私はすべてn秒のファイルシステムをスキャンしてコレクションに保存する秒を実行します。Java mongodb(morphia)はユニークな文書を保証します
私は、データベース内で同じファイルを2回使用しないようにするための最善の方法はわかりません。現時点では私は、ファイルの絶対パスを取って、これはnullを返した場合、他の絶対パスに対して、データベース内の
public Movie findByAbsolutePath(String absolutePath) {
return getDatastore().find(Movie.class, "absolutePath", absolutePath).limit(1).get();
}
はその後、先に行くと、保存することを確認しています。
このように、各ファイルをデータベースと照合してチェックするのが最適ですか?私がチェックしています、以前の方法よりも早くは(私はそれが仕事を得ることができます仮定して)ということです私は、次のインデックスアノテーションを使用してみましたが、それは動作するようには思えないし、私は重複
@Indexes(@Index(fields = {@Field("fileName"), @Field("absolutePath")}, options = @IndexOptions(unique = true, dropDups = true)))
で終わります重複に対して?
ファイルを表すJavaバリューオブジェクトを設計することができます。重複したファイルを簡単に検出できるように、ハッシュコードと同等のメソッドを実装します。 – Hector
ハッシュコードを持つファイルpojoを既に持っていて、それがあなたが参照しているのであれば、メソッドと同じですか?しかし、私はどのようにそれをモンゴーと一緒に使うのですか? –
私は1つの方法は、ファイルの絶対パスを_idとして使用することです、それは決して重複したエントリではありませんが、あなたは一意のインデックスを持っている正しい方法であると思われる以外の理由はほとんどありません重複するエントリが内部に入ることはありません。ユニークなインデックスは大文字と小文字を区別しませんafaik –