我正在尝试从数据存储中删除一个对象,但它没有删除它。代码如下:
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 语句给出了两个对象:
为什么它不删除旧对象mongoConstants.ds.delete(obj);
?我已经注释了id
字段 ad@Id
但仍然有两个对象保存为相同的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:
问题看起来像查询结果。使用 above query1
,它返回零结果。