首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在mongodb中从基值开始递增并更新多个文档

如何在mongodb中从基值开始递增并更新多个文档
EN

Stack Overflow用户
提问于 2018-06-02 02:12:55
回答 1查看 610关注 0票数 0

所以我有一个对象数组。每个对象都有一个值索引。当我在客户端将索引值更新为0时。使用旧索引的mongo文档将使用新索引0进行更新,而其他文档将获得该索引+1 -与splice相同的前提。

基本上现在,我正在使用旧的索引进行查询,并存储id以备以后调用。

然后,我逐个更新所有其他索引。

然后,我将旧id设置为新索引。然而,它并不起作用。它增加了所有文档的'index‘错误。我需要它从每个文档的实际值newIndex ++中增加‘索引’。

或者..。如果还有其他我没见过的方法。

代码语言:javascript
复制
    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();
EN

回答 1

Stack Overflow用户

发布于 2018-06-02 06:36:30

好的..。所以我没有走这条路。它被证明太难了,哈哈。

相反,我从reducer获取状态,并使用更新后的状态执行axios post请求。无论如何,它只更新数据库中的索引。也许不是最好的代码:D

代码语言:javascript
复制
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();
        });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50648967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档