0
私はSparkJavaプロジェクトでMongoDBとMorphiaを使用しています。これは今私にとって新しい冒険です。私はこれがデータベースの既存のオブジェクトを更新する最良の方法であるかどうか疑問に思っていますか?完全な文書を更新する場合は、より良い方法がありますか?私ContentBlockDaoでMorphiaでmongodbオブジェクトを更新する際のベストプラクティスです
例の更新方法は、
@Override
public ContentBlock update(ContentBlock contentBlock) throws DaoException {
Query<ContentBlock> query = datastore.createQuery(ContentBlock.class)
.field("id").equal(new ObjectId(contentBlock.getId()));
UpdateOperations<ContentBlock> updateOperations = setValuesForUpdate(
datastore.createUpdateOperations(ContentBlock.class),
contentBlock);
datastore.update(query, updateOperations);
return query.get();
}
private UpdateOperations setValuesForUpdate(UpdateOperations<ContentBlock> updateOperations,
ContentBlock contentBlock) {
updateOperations.set("html", contentBlock.getHtml());
updateOperations.set("lastUpdater", contentBlock.getLastUpdater());
return updateOperations;
}
私は保存しようとしましたが、何らかの理由で同じ_idのドキュメントに重複している同じオブジェクトが見えてしまいます。なぜこれが起こっているのか分かりません。 json文字列を送信し、ContentBlockオブジェクトに変換して保存します。 – mattwallace
'_id'フィールドがMongoDBで一意な制約を持っているので、' _id'は 'id'ではありませんか? 'ContentBlock'クラスの' @ Id'アノテーションでidフィールドにアノテーションを付けてみてください。問題が解決しない場合は、サンプルのJSON文字列と変換コードと共に 'ContentBlock'オブジェクトを追加できます。 – Veeram