亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB中怎么實現一個更新函數

發布時間:2021-07-16 16:54:54 來源:億速云 閱讀:126 作者:Leah 欄目:關系型數據庫

MongoDB中怎么實現一個更新函數,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。


在MongoDB里面對于數據的更新操作提供了兩類函數:save()、update()

如果要修改數據最直接的使用函數就是update()函數,但是這個函數的語法要求很麻煩。
語法:db.集合.update(更新條件,新的對象數據(更新操作符),upsert,multl)
  ● upsert:如果要更新的數據不存在,則增加一條新的內容(true為增加,false為不增加)。
  ● multi:表示是否只更新滿足條件的第一行記錄,如果設置為false,只更新第一條,如果設置為true全更新。

范例:更新存在的數據---將年齡是30歲的薪水更新為8000(此時會返回多條數據)
只更新第一條數據:
> db.emp.find().skip(0).limit(5).sort({"$natural":1}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "趙一",
        "sex" : "男",
        "age" : 30,
        "sal" : 1000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "錢二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孫三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 7000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 6400,
        "loc" : "北京"
}


> db.emp.update({"age":30},{"$set":{"sal":9999}},false,false);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.emp.find().skip(0).limit(5).sort({"$natural":1}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "趙一",
        "sex" : "男",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "錢二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孫三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 7000,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 6400,
        "loc" : "北京"
}

所有滿足條件的數據都更新:
> db.emp.update({"age":30},{"$set":{"sal":9999}},false,true);
WriteResult({ "nMatched" : 5, "nUpserted" : 0, "nModified" : 4 })
> db.emp.find().skip(0).limit(5).sort({"$natural":1}).pretty();
{
        "_id" : ObjectId("599108423268c8e84253be26"),
        "name" : "趙一",
        "sex" : "男",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be27"),
        "name" : "錢二",
        "sex" : "女",
        "age" : 22,
        "sal" : 5000,
        "loc" : "上海"
}
{
        "_id" : ObjectId("599108423268c8e84253be28"),
        "name" : "孫三",
        "sex" : "男",
        "age" : 40,
        "sal" : 2000,
        "loc" : "深圳"
}
{
        "_id" : ObjectId("599108423268c8e84253be29"),
        "name" : "李四",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}
{
        "_id" : ObjectId("599108423268c8e84253be2a"),
        "name" : "周五",
        "sex" : "女",
        "age" : 30,
        "sal" : 9999,
        "loc" : "北京"
}

范例:更新不存在的數據
> db.emp.update({"age":55},{"$set":{"name":"不存在"}},true,false);
WriteResult({
        "nMatched" : 0,
        "nUpserted" : 1,
        "nModified" : 0,
        "_id" : ObjectId("5991629aca6455d4a46870f6")
})
> db.emp.find({"age":55}).pretty();
{ "_id" : ObjectId("5991629aca6455d4a46870f6"), "age" : 55, "name" : "不存在" }

此時相當于進行了數據的創建。
那么除了update()之外,還提供了一個save()函數,這個函數的功能與更新不存在的內容相似。

范例:使用save()操作
> db.emp.find({"age":55}).pretty();
{ "_id" : ObjectId("5991629aca6455d4a46870f6"), "age" : 55, "name" : "不存在" }
> db.emp.save({"_id" : ObjectId("5991629aca6455d4a46870f6"),"age":56});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"age":56}).pretty();
{ "_id" : ObjectId("5991629aca6455d4a46870f6"), "age" : 56 }
> db.emp.save({"_id" : ObjectId("5991629aca6455d4a46870f6"),"age":56,"name":"stone"});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.emp.find({"age":56}).pretty();
{
        "_id" : ObjectId("5991629aca6455d4a46870f6"),
        "age" : 56,
        "name" : "stone"
}

使用save,只會保留在save中出現的字段。如果數據不存在,則插入。

> db.emp.save({"age":58,"name":"stone1"});
WriteResult({ "nInserted" : 1 })
> db.emp.find({"age":58}).pretty();
{
        "_id" : ObjectId("599164db0184ff511bf02b96"),
        "age" : 58,
        "name" : "stone1"
}

對應的id數據存在了,就是更新操作。要保存的數據不存在(不能保存"_id"),就變成了增加操作。
建議使用update,盡量少用save。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马龙县| 衡阳市| 三穗县| 明溪县| 洪洞县| 定州市| 宁强县| 璧山县| 泰州市| 宁晋县| 修文县| 海伦市| 古丈县| 大埔区| 青浦区| 盐亭县| 门源| 广水市| 江达县| 拜泉县| 东平县| 潼南县| 从化市| 云安县| 宝丰县| 沙洋县| 南雄市| 涟源市| 上饶市| 株洲县| 山西省| 阿勒泰市| 祁连县| 老河口市| 溧阳市| 阿合奇县| 志丹县| 濮阳市| 苗栗市| 凯里市| 包头市|