【问题标题】:How to update and post in single operation in mongodb如何在mongodb的单个操作中更新和发布
【发布时间】:2020-06-14 10:33:13
【问题描述】:
    var postStop = async (machine,stop_name,timestamp)=>{
        var stop = new Stop({
            machine_name:machine,
            stop_name:stop_name,
            start_time:timestamp,
            end_time:null
        });
        stop.save();
}
    var updateStop = async (machine,stop_name,start_time,end_time)=>{ 
    var stop = await Stop.findOne({machine_name:machine,stop_name:stop_name,start_time:start_time});
    if(!stop){
        console.log(machine,stop_name,start_time,end_time)
    }
    stop.end_time = end_time;
    stop.save();
}

在某些情况下,我必须在一次操作中更新和发布。
我已将这两个合并为一个如何执行此操作。

【问题讨论】:

    标签: javascript node.js database mongodb mongoose


    【解决方案1】:

    如果您希望在同一操作中更新或创建,您可以使用upsert option

    var stop = await Stop.update(
        {machine_name:machine,stop_name:stop_name,start_time:start_time},
        {end_time:end_time},
        {upsert: true});
    

    【讨论】:

    • 谢谢您的回复,实际上,我正在创建一个时间间隔系列数据库,其中每个文档都有 start_time 和 end_time 并且对于每个新文档首先插入我必须更新最后插入的值 end_timestamp 和这个时间戳是下一个插入文档的开始时间
    【解决方案2】:

    可以选择在单个查询中插入文档(如果不存在)和更新(如果存在)。

    语法: db.collection.update(查询,更新,{upsert: true})

    【讨论】:

    • 谢谢您的回复,实际上,我正在创建一个时间间隔系列数据库,其中每个文档都有 start_time 和 end_time 并且对于每个新文档首先插入我必须更新最后插入的值 end_timestamp 和这个时间戳是下一个插入文档的开始时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2019-03-16
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多