您的位置:首页 > 数据库 > Mongodb

spring-data-mongodb 对于collection的upsert操作

2014-12-30 12:21 561 查看
项目中用MongoTemplate实现对mongodb的操作

配置如下:

<mongo:mongo host="localhost" port="27017" />

<mongo:db-factory dbname="dbname" mongo-ref="mongo"
write-concern="SAFE" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean><pre name="code" class="java">



在使用的时候 对collection某个属性的upsert很方便,但是对于collection本身的upsert操作
template.upsert(query, update, entityClass)好像是不能用,于是改用template.execute(entityClass, callback)

记录一下方便以后使用

@Autowired
private MongoTemplate template;


public void upsert(CommodityDTO commodity) {
final BasicDBObject dbDoc = new BasicDBObject();
template.getConverter().write(commodity, dbDoc);
template.execute(CommodityDTO.class, new CollectionCallback<CommodityDTO>() {
@Override
public CommodityDTO doInCollection(DBCollection collection) throws MongoException, DataAccessException {
Query query = new Query();
query.addCriteria(Criteria.where(STR_ID).is(commodity.getId()));
collection.update(query.getQueryObject(), dbDoc, true, false);
return null;
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: