最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Nodejs和Springboot连接mongodb,但编辑一个会导致文档重复

网站源码admin23浏览0评论

Nodejs和Springboot连接mongodb,但编辑一个会导致文档重复

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);

谢谢

发布评论

评论列表(0)

  1. 暂无评论