MongoDB 文档更新


  • Lv 1

    MongoDB 文档更新

    • 本小节将介绍如何更新已经存在的数据文档,可以使用update()和save()来达到作用。
      其功能如同SQL中的update,以下将以SQL语法对照转换做为范例。

    Update()用法

    • 针对已经存在的数据做更新,语法如下:
    db.COLLECTION_NAME.update (
        <条件>
        <更新对象与值>
        {
            <upsert>
            <multi>
        }
    )
    

    说明:

    • COLLECTION_NAME为数据集名称
    • 条件如同SQL中WHERE的条件式
    • 更新对象如同SQL中的SET设定值
    • Upsert表示如数据不存在是否插入此笔资料,可以选择是否使用,默认为False不插入
    • Multi表示是否更新条件下所有数据,可以选择是否使用,默认为False只更新条件下第一笔数据

    SQL语法对照转换范例:

    • 假设SQL原始user数据表如下:
      0_1478332501714_2.png
      欲更新ID 001的用户名为Kevin
    • SQL用法(以SQL server为例):
    UPDATE user SET name= 'Kevin' WHERE id= '001';
    
    • MongoDB用法:
    db.user.update (
             {‘_id’: ‘001’},
             {‘$set’: 
                      {‘name’: ‘Kevin’}
             }
    )
    

    ※ MongoDB中主键值应使用 “_id”
    ※ 如欲更新多笔数据则使用multi为true、数据若不存在欲插入新数据则使用upsert为true,语法如下:

    db.user.update (
             {‘_id’: ‘001’},
             {‘$set’: 
                      {‘name’: ‘Kevin’}
             },
             {upsert:true},
             {multi:true}
    )
    

    Save()用法

    • 透过新传入的数据将原有数据取代,语法如下:
    db.COLLECTION_NAME.save (<document>)
    

    SQL语法对照转换范例:

    SQL范例要求同上

    • MongoDB用法:
    db.user.save ({
        ‘_id’: ‘001’,
        ‘name’: ‘Kevin’,
        ‘sex’: ‘M’,
        ‘phone’: ‘18699747733’
    })
    

    ※ 文档更新须注意条件的指令,否则将会更新所有文档资料,详细的条件操作方式可以参考「MongoDB条件操作」的文章。


  • 註冊用戶

    mongodb的save和insert函数都可以向collection里插入数据,但两者是有两个区别: 

    一、使用save函数里,如果原来的对象不存在,那他们都可以向collection里插入数据,如果已经存在,save会调用update更新里面的记录,而insert则会忽略操作 

    二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。 


  • Lv 1

    @JasonChen 说:

    二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。

     意思是 save 不會用 key 來確認資料是否存在?


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待