编辑一个会导致文档重复"/>
Nodejs和Springboot连接mongodb,但编辑一个会导致文档重复
[我有一个NodeJS应用程序使用mongoose连接mongodb,而一个Springboot应用程序(使用MongoRepository)在同一mongodb中检索数据,对其进行处理并更新文档。
// Get Work
Work work = workRepository.findByJobNumAndFileRef(jobNum, fileRef);
// do processing
work.setUpdated_at(Calendar.getInstance().getTime());
// update
workRepository.save(work);
问题是Springboot更新文档时,它创建了另一个文档而不是更新原始文档。
"data": [
{
"_id": "5e9489ea2ea7c9fb5a6b7be6",
"num": 1,
"jobNum": "TG123",
"description": "Good tesst",
"started_at": "2020-04-04T17:00:00.000Z",
"ended_at": "2020-04-05T17:00:00.000Z",
"fileName": "File_Upload",
"status": "1",
"fileRef": "ea7lsx1dnek8ynjnom",
"fileLocation": "../ea7lsx1dnek8ynjnom_File_Upload_1586792938917",
"created_at": "2020-04-13T15:48:58.962Z",
"updated_at": "2020-04-13T15:48:58.962Z",
"__v": 0
},
{
"_id": "5e948a0c590d1d5458051548",
"jobNum": "TG123",
"num": 1,
"fileRef": "ea7lsx1dnek8ynjnom",
"description": "Good tesst",
"started_at": "2020-04-04T17:00:00.000Z",
"ended_at": "2020-04-05T17:00:00.000Z",
"created_at": "2020-04-13T15:48:58.962Z",
"updated_at": "2020-04-13T15:49:32.217Z",
"_class": "io.github.mongo.model.Work"
}
]
我的问题是如何强制Springboot更新由Nodejs应用程序创建的同一文档。
谢谢
回答如下:我能够通过将MongoRepository更改为MongoTemplate来解决我的问题
Criteria criteria = Criteria.where("jobNum").is(jobNum).and("fileRef").is(fileRef);
Update update = new Update();
update.addToSet("work", workData);
update.set("status", "2");
update.set("updated_at", Calendar.getInstance().getTime());
Query query = new Query();
query.addCriteria(criteria);
mongoTemplate.findAndModify(query, update, Work.class);
谢谢
更多推荐
Nodejs和Springboot连接mongodb,但编辑一个会导致文档重复
发布评论