欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB對數(shù)組進(jìn)行增刪改查操作

 更新時(shí)間:2023年05月25日 14:16:28   作者:水銀H  
與關(guān)系型數(shù)據(jù)庫相比,MongoDB支持?jǐn)?shù)組,將數(shù)組存儲到文檔之中,下面這篇文章主要給大家介紹了關(guān)于MongoDB對數(shù)組進(jìn)行增刪改查操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在使用mongo進(jìn)行業(yè)務(wù)處理中,有時(shí)需要對文檔(document)中的某個(gè)數(shù)組節(jié)點(diǎn)進(jìn)行操作,這是下面要提到的 p u l l , pull, pull,push,$set操作。

mongoDB語法

設(shè)置一個(gè)類ExtendEntity

示例數(shù)據(jù)如下:

{
  "extendId": "2022061500001",
  "taskId": "T0271001",
  "type": "1",
  "extendContents": [
    {
      "extendCode": "EX1001",
      "extendName": "擴(kuò)展1",
      "extendValue": "手機(jī)屏幕",
      "order": 1,
      "hasValue": true
    }
  ],
  "creator": "LiMing",
  "createTime": "2022-06-15 14:03:40",
  "editor": "LiMing",
  "editTime": "2022-06-15 14:03:40"
},
{
  "extendId": "2022061500002",
  "taskId": "T0271001",
  "type": "1",
  "extendContents": [
    {
      "extendCode": "EX1001",
      "extendName": "擴(kuò)展1",
      "extendValue": "手機(jī)屏幕",
      "order": 1,
      "hasValue": true
    },
	{
      "extendCode": "EX1002",
      "extendName": "擴(kuò)展2",
      "extendValue": "電腦",
      "order": 2,
      "hasValue": true
    }
  ],
  "creator": "ZhangSan",
  "createTime": "2022-06-15 14:03:40",
  "editor": "LiMing",
  "editTime": "2022-06-15 14:03:40"
}

修改數(shù)組節(jié)點(diǎn)–$set

參考: 進(jìn)入官方$set文檔

//將數(shù)組extendContents中extendCode為EX1002值更新
//$表示匹配到的第一個(gè)為EX1002的對象修改掉
//如果想匹配多個(gè)值,可修改為$[]
db.ExtendEntity.update({"extendContents.extendCode":"EX1002"},{$set:{"extendContents.$.extendValue":"更新1002的值"}})
//也可以指定下標(biāo),從0開始,將數(shù)組extendContents第二個(gè)對象修改掉
db.ExtendEntity.update({"extendContents.extendCode":"EX1002"},{$set:{"extendContents.1.extendValue":"更新1002的值"}})

增加數(shù)組節(jié)點(diǎn)–$push

參考: 進(jìn)入官方$push文檔

//在數(shù)組extendContents中增加一個(gè)元素
db.ExtendEntity.update({"extendId": "2022061500002"},{$push:{"extendContents":{
      "extendCode": "EX1003",
      "extendName": "擴(kuò)展3",
      "extendValue": "電腦3",
      "order": 3,
      "hasValue": true
    }})

刪除數(shù)組節(jié)點(diǎn)–$pull

參考: 進(jìn)入官方$pull文檔

需要該對象中每個(gè)屬性值與mongodb數(shù)組中完全相同才能刪除

//從數(shù)組extendContents中刪除一個(gè)對象元素
{ "extendCode": "EX1003","extendName": "擴(kuò)展3","extendValue": "電腦3","order": 3,"hasValue": true}
db.ExtendEntity.update({"extendId": "2022061500002"},{$pull:{"extendContents":{
      "extendCode": "EX1003",
      "extendName": "擴(kuò)展3",
      "extendValue": "電腦3",
      "order": 3,
      "hasValue": true
    }})

如果需要按數(shù)據(jù)中某個(gè)對象元素的某個(gè)屬性刪除

//刪除數(shù)組extendContents中extendCode為EX1003的對象元素
db.ExtendEntity.update({"extendId": "2022061500002"},{$pull:{"extendContents":{"extendCode":"EX1003"}})

spring語法

當(dāng)項(xiàng)目使用sping+mongodb時(shí),spring為我們提供了相應(yīng)的接口。使用org.springframework.data.mongodb.core.queryUpdate類中的set、push、pull方法。

修改數(shù)組節(jié)點(diǎn)–$set

Update update = new Update();
//修改元素
update.set("extendContents.$.extendValue","更新1002的值");
update.set("editTime",new Date());
//查詢條件
Query query = new Query(Criteria.where("extendContents.extendCode").is("EX1002"));
mongoTemplate.updateFirst(query, update, ExtendEntity.class);

增加數(shù)組節(jié)點(diǎn)–$push

// 字符串text的對象實(shí)體為ExtendContent 
String text = "{ \"extendCode\": \"EX1003\",\"extendName\": \"擴(kuò)展3\",\"extendValue\": \"電腦3\",\"order\": 3,\"hasValue\": true}";
ExtendContent addExtend = JSONObject.parseObject(text, ExtendContent.class);
Update update = new Update();
//添加元素
update.push("extendContents",addExtend);
update.set("editTime",new Date());
//查詢條件
Query query = new Query(Criteria.where("extendId").is("2022061500002"));
mongoTemplate.updateFirst(query, update, ExtendEntity.class);

刪除數(shù)組節(jié)點(diǎn)–$pull

Update update = new Update();
//刪除元素,刪除數(shù)組extendContents中extendCode=EX1003的對象元素
update.pull("extendContents", new BasicDBObject("extendCode","EX1003"));
update.set("editTime",new Date());
//查詢條件
Query query = new Query(Criteria.where("extendId").is("2022061500002"));
mongoTemplate.updateFirst(query, update, ExtendEntity.class);

注: 以上示例均使用mongoTemplate.updateFirst,如需要處理多條數(shù)據(jù),可使用mongoTemplate.updateMulti方法。

總結(jié)

到此這篇關(guān)于MongoDB對數(shù)組進(jìn)行增刪改查操作的文章就介紹到這了,更多相關(guān)MongoDB對數(shù)組增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在 Fedora 上安裝 MongoDB 服務(wù)器的方法教程

    在 Fedora 上安裝 MongoDB 服務(wù)器的方法教程

    Mongo是一個(gè)高性能、開源、無模式的、面向文檔的數(shù)據(jù)庫,它是最受歡迎的 NoSQL 數(shù)據(jù)庫之一。這篇文章主要介紹了在 Fedora 上安裝 MongoDB 服務(wù)器的方法,需要的朋友可以參考下
    2020-03-03
  • MongoDB入門教程之常用的運(yùn)維技術(shù)介紹

    MongoDB入門教程之常用的運(yùn)維技術(shù)介紹

    這篇文章主要介紹了MongoDB入門教程之常用的運(yùn)維技術(shù)介紹,講解了安裝部署、狀態(tài)監(jiān)控、安全認(rèn)證、備份和恢復(fù)等內(nèi)容,需要的朋友可以參考下
    2014-08-08
  • MongoDB查詢性能優(yōu)化驗(yàn)證及驗(yàn)證

    MongoDB查詢性能優(yōu)化驗(yàn)證及驗(yàn)證

    這篇文章主要介紹了MongoDB查詢性能驗(yàn)證及優(yōu)化的相關(guān)知識,涉及到MongoDB 查詢優(yōu)化原則知識點(diǎn),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • 使用aggregate在MongoDB中查詢重復(fù)數(shù)據(jù)記錄的方法

    使用aggregate在MongoDB中查詢重復(fù)數(shù)據(jù)記錄的方法

    這篇文章主要介紹了使用aggregate在MongoDB中查詢重復(fù)數(shù)據(jù)記錄的方法的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 深入理解MongoDB的復(fù)合索引

    深入理解MongoDB的復(fù)合索引

    對于MongoDB的多鍵查詢,創(chuàng)建復(fù)合索引可以有效提高性能。這篇文章主要給大家介紹了關(guān)于MongoDB復(fù)合索引的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2018-03-03
  • 解決MongoDB?位置查詢報(bào)錯(cuò)planner?returned?error:?unable?to?find?index?for?$geoNear?query的問題

    解決MongoDB?位置查詢報(bào)錯(cuò)planner?returned?error:?unable?to?find

    這篇文章主要介紹了MongoDB位置查詢報(bào)錯(cuò)planner?returned?error:?unable?to?find?index?for?$geoNear?query的解決方案,需要的朋友可以參考下
    2023-08-08
  • MongoDB 聚合查詢詳解

    MongoDB 聚合查詢詳解

    這篇文章主要介紹了MongoDB 聚合查詢詳解的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • window平臺安裝MongoDB數(shù)據(jù)庫圖文詳解

    window平臺安裝MongoDB數(shù)據(jù)庫圖文詳解

    本篇文章主要介紹了window平臺安裝MongoDB數(shù)據(jù)庫圖文詳解,主要介紹window下面安裝mogod的步驟和使用細(xì)節(jié)。感興趣的小伙伴們可以參考一下。
    2016-11-11
  • Mongodb UPDATE使用$sort將數(shù)組重新排序的示例代碼

    Mongodb UPDATE使用$sort將數(shù)組重新排序的示例代碼

    $sort方法在$push操作過程中,修改數(shù)組元素的排序,$sort方法,必須和$each共同使用,mongodb允許用戶傳遞一個(gè)空的數(shù)組給$each方法,保證用戶無須向數(shù)組中插入元素也可以將數(shù)組進(jìn)行排序,本文給大家介紹了Mongodb UPDATE使用$sort將數(shù)組重新排序,需要的朋友可以參考下
    2024-06-06
  • 關(guān)于MongoTemplate通過id查詢?yōu)閚ull的問題

    關(guān)于MongoTemplate通過id查詢?yōu)閚ull的問題

    這篇文章主要介紹了關(guān)于MongoTemplate通過id查詢?yōu)閚ull的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評論