Nodejs и Springboot соединяют mongodb, но редактирование одного вызывает дублирование документа - PullRequest
0 голосов
/ 14 апреля 2020

У меня приложение NodeJS использует mon goose для подключения 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.

Спасибо

1 Ответ

0 голосов
/ 15 апреля 2020

Я смог решить мой вопрос, изменив 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);

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...