データストアからオブジェクトを削除しようとしていますが、削除されません。コードを以下に示します。
MoIADocument moIADoc = new MoIADocument();
// update fields in moIADoc object
ds.save(moIADoc);
printDBDocs();
// create a query to retrieve objects
QueryResults<MoIADocument> foundResults = dao.find(query);
List<MoIADocument> list = foundResults.asList();
for (MoIADocument obj : list) {
ds.delete(obj);
MoDBIATopic topicBO = obj.getData().get(EnumChannelType.FACEBOOK).getData().get(GraphConstants.Topic_Default);
topicBO.setInfluence(topicBO.getInfluence() * 25);
ds.save(obj);
}
printDBDocs();
###########################
最初の出力結果 (JSON 形式) は次のとおりです。
###########################
for
ループ内
の objは次のとおりです。
###########################
forループの後、printステートメントは2つのオブジェクトを次のように与えます。
によって古いオブジェクトが削除されないのはなぜmongoConstants.ds.delete(obj);
ですか? id
そして、フィールド広告に注釈を付けまし@Id
たが、まだ 2 つのオブジェクトが同じで保存されていid
ます。これはどのように可能ですか?オブジェクトが同じ場合、オブジェクトを強制的に上書きするにはどうすればよいid
ですか?
@Id
@Indexed
private String id;
注: JSON で示されてid
いるトップ レベルです。id
そして、クエリを次のように使用してみました:
Query<MoIADocument> query1 = ds.createQuery(MoIADocument.class).disableValidation();
query1.field("id").equal(obj.getId());
ds.delete(query1);
これも期待どおりに機能しません。
EDIT:
問題はクエリ結果のように見えます。上記を使用するquery1
と、ゼロの結果が返されました。