我正在使用Spring的MongoTemplate更新文档
这是更新文档的代码(使产品注释的数组推送);
public void saveProductComment(String productId,ProductComment comment){
DBObject commentDBO = new BasicDBObject();
mongoTemplate.getConverter().write(comment, commentDBO);
mongoTemplate.updateFirst(
Query.query(Criteria.where("_id").is(productId)),
new Update().push("comment", commentDBO),
Product.class);
}
然后我得到更新文档,但在更新后返回null。 有代码可以找到所有文件。
public List<Product> getAllProducts() {
return mongoTemplate.findAll(Product.class, COLLECTION_NAME);
}
问题是,当我更新文档时,其存储顺序会发生变化(更新后按字母顺序排序)。 例如;
//Before Update
{
name: {...} ,
price: {...} ,
comment: {[...]}
}
{
comment: {[...]},
name: {...} ,
price: {...} ,
}
如何在更新后实现文档。是否有任何方法可以使用Spring的MongoTemplate或任何替代解决方案来查找文档?谢谢你的关注。
答案 0 :(得分:0)
我发现了自己的错误;
在使用update.push方法时,mongodb本地将字段更改为数组,因此我的find方法找不到预期的插入类(例如product.class)。所以我在我的Product.Class mongoDB中将ProductComment属性更改为ProductComment []数组,没有问题。