Пожалуйста, поделитесь своим опытом частичного обновления документа JSON. Сейчас я храню свои документы JSON в MongoDB, который выглядит следующим образом:
{
id: ObjectId(507f191e810c19729de860ea),
title: 'Sterling Archer',
comments: [
{text: 'Comment text', tags: ['tag1', 'tag2', 'tag3']},
{text: 'Comment test', tags: ['tag2', 'tag5']}
]
}
Мне нужно часто обновлять документы, используя спецификацию rfc6902. Теперь я делаю это неоптимизированным способом, который выглядит следующим образом (в этом примере я использую модуль nodejs/express/mongoose и fast-json-patch):
var jsonpatch = require('fast-json-patch');
app.patch('/document/:id', function (req, res, next) {
var document_id = req.params.id;
// req.body.patch: { "op": "add", "path": "/comments/2", "value": {text: 'Comment test3', tags: ['tag4']}" }
var patches = req.body.patch;
// find document
Document.findById(document_id, function (err, document) {
// Applying patches
jsonpatch.apply(document, patches);
// Update whole document in MongoDB
Document.update({_id: document_id}, document, function (err) {
return res.status(200).send();
});
});
});
Это неоптимальный подход к исправлению документов из-за двух запросов в MongoDB и замены всего документа. Поэтому я ищу оптимизированный подход и хочу попробовать RethinkDB для этой задачи. Можете ли вы помочь мне проверить возможность атомарного обновления документа с помощью одного запроса с RethinkDB? Или я должен искать другой способ решения моей проблемы?
Поделитесь своим опытом частичного обновления документа JSON.