Как увеличить базовое значение в mongodb и обновить много документов - PullRequest
0 голосов
/ 01 июня 2018

Итак, у меня есть массив объектов.Каждый является объектом со значением индекса.Когда я обновляю значение индекса на стороне клиента, чтобы сказать 0. Документ Монго со старым индексом обновляется с новым индексом 0, а другие документы получают этот индекс +1 - то же самое условие, что и в соединении.

По сути, сейчас я запрашиваю старый индекс и сохраняю идентификатор для последующего вызова.

Затем я обновляю все остальные индексы по одному.

Затем я устанавливаю старый идентификатор в новый индекс.Тем не менее, это не работает.Увеличивает все документы с «указателем» неправильно.Мне нужно, чтобы увеличить «индекс» от фактического значения newIndex ++ для каждого следующего документа.

Или ... если есть другой способ, который я не видел.

    const {_id} = req.body.user;
    const { oldIndex, newIndex } = req.body.data;

    const keepIndex = await Tasks.find({_user: _id, index: oldIndex}).exec();

    const saveID = keepIndex[0]._id;
    let counter = newIndex;
    const updateIndexId = await Tasks.updateMany({_user: _id, index: {$gte : newIndex} }, {$inc : {'index' : 1} })
        .where('created_at')
        .gt(moment().startOf('day'))
        .lt(moment().endOf('day')).exec();

    const finalUpdate = await Tasks.updateOne({_id: saveID }, { $set : {'index': newIndex}}).exec();

1 Ответ

0 голосов
/ 02 июня 2018

Хорошо .... так что я не пошел по этому пути.Это оказалось слишком сложно LOL.

Вместо этого я получил состояние от редуктора и выполнил аксиальный пост-запрос с обновленным состоянием.В любом случае это только обновление индексов в БД.Может быть, не самый лучший код: D

app.post('/api/update_task_index', async (req, res) => {
        req.body.items.map(async (x, index) => {
            Tasks.update({ _id: x._id }, { $set: { index: index } }).exec();
        });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...