最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB中的push操作詳解(將文檔插入到數(shù)組)

 更新時(shí)間:2022年11月11日 11:08:21   作者:愛(ài)游泳的老白  
$push操作符添加指定的值到數(shù)組中,下面這篇文章主要給大家介紹了關(guān)于MongoDB中push操作(將文檔插入到數(shù)組)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 概述

在本教程中,我們將介紹如何在MongoDB中將文檔插入到數(shù)組中。此外,我們將看到 $push$addToset 運(yùn)算符用于將值添加到數(shù)組中的各種應(yīng)用。

首先,我們將創(chuàng)建一個(gè)示例數(shù)據(jù)庫(kù)、一個(gè)集合,并將虛擬數(shù)據(jù)插入其中。此外,我們將研究一些使用 $push 運(yùn)算符更新文檔的基本示例。稍后,我們還將討論 $push$addtoSet 運(yùn)算符的各種用例。

讓我們深入研究在 MongoDB 中將文檔插入數(shù)組的各種方法。

2. 數(shù)據(jù)庫(kù)初始化

首先,讓我們建立一個(gè)新的數(shù)據(jù)庫(kù)baeldung和一個(gè)樣本集合,orders:

use baeldung;
db.createCollection(orders);

現(xiàn)在讓我們使用insertMany方法將一些文檔添加到集合中:

db.orders.insertMany([
    {
        "customerId": 1023,
        "orderTimestamp": NumberLong("1646460073000"),
        "shippingDestination": "336, Street No.1 Pawai Mumbai",
        "purchaseOrder": 1000,
        "contactNumber":"9898987676",
        "items": [ 
            {
                "itemName": "BERGER",
                "quantity": 1,
                "price": 500
            },
            {
                "itemName": "VEG PIZZA",
                "quantity": 1,
                "price": 800
            } 
          ]
    },
    {
        "customerId": 1027,
        "orderTimestamp": NumberLong("1646460087000"),
        "shippingDestination": "445, Street No.2 Pawai Mumbai",
        "purchaseOrder": 2000,
        "contactNumber":"9898987676",
        "items": [ 
            {
               "itemName": "BERGER",
               "quantity": 1,
               "price": 500
            },
            {
               "itemName": "NON-VEG PIZZA",
               "quantity": 1,
               "price": 1200
            } 
          ]
    }
]);

如果插入成功,上面的命令將打印一個(gè)類似于下面的 JSON:

{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("622300cc85e943405d04b567"),
	ObjectId("622300cc85e943405d04b568")
    ]
}

至此,我們已經(jīng)成功建立了數(shù)據(jù)庫(kù)和集合。我們將在所有示例中使用這個(gè)數(shù)據(jù)庫(kù)和集合。

3. 使用 Mongo Query 進(jìn)行推送操作

MongoDB 提供了各種類型的數(shù)組運(yùn)算符來(lái)更新 MongoDB 文檔中的數(shù)組。 MongoDB 中的 $push 運(yùn)算符將值附加到數(shù)組的末尾。根據(jù)查詢的類型,我們可以將$push運(yùn)算符與updateOne、updateMany、findAndModify 等方法一起使用。

現(xiàn)在讓我們看看使用*$push*運(yùn)算符的 shell 查詢:

db.orders.updateOne(
    {
        "customerId": 1023
    },
    {
        $push: {
            "items":{
                "itemName": "PIZZA MANIA",
                "quantity": 1,
                "price": 800
            }
        }
    });

上述查詢將返回以下文檔:

{
    "acknowledged":true,
    "matchedCount":1,
    "modifiedCount":1
}

現(xiàn)在讓我們查看customerId 為 1023的文檔。在這里,我們可以看到新項(xiàng)目插入到列表“ items ”的末尾:

{
    "customerId" : 1023,
    "orderTimestamp" : NumberLong("1646460073000"),
    "shippingDestination" : "336, Street No.1 Pawai Mumbai",
    "purchaseOrder" : 1000,
    "contactNumber" : "9898987676",
    "items" : [
        {
            "itemName" : "BERGER",
            "quantity" : 1,
	    "price" : 500
        },
	{
            "itemName" : "VEG PIZZA",
	    "quantity" : 1,
	    "price" : 800
	},
	{
	    "itemName" : "PIZZA MANIA",
	    "quantity" : 1,
	    "price" : 800
        }
    ]
}

4. 使用Java驅(qū)動(dòng)代碼進(jìn)行推送操作

到目前為止,我們已經(jīng)討論了將文檔推送到數(shù)組中的 MongoDB shell 查詢?,F(xiàn)在讓我們使用 Java 代碼實(shí)現(xiàn)推送更新查詢。

在執(zhí)行更新操作之前,我們先連接到 baeldung數(shù)據(jù)庫(kù)中的orders集合:

mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("baeldung");
MongoCollection<Document> collection = database.getCollection("orders");

在這里,在這種情況下,我們連接到在 localhost 的默認(rèn)端口 27017 上運(yùn)行的 MongoDB。

4.1. 使用 DBObject

MongoDB Java 驅(qū)動(dòng)程序提供對(duì)DBObject和BSON文檔的支持。在這里,DBObject是 MongoDB 舊版驅(qū)動(dòng)程序的一部分,但在較新版本的 MongoDB 中已棄用。

現(xiàn)在讓我們看看 Java 驅(qū)動(dòng)程序代碼以將新值插入到數(shù)組中:

DBObject listItem = new BasicDBObject("items", new BasicDBObject("itemName", "PIZZA MANIA")
  .append("quantity", 1)
  .append("price", 800));
BasicDBObject searchFilter = new BasicDBObject("customerId", 1023);
BasicDBObject updateQuery = new BasicDBObject();
updateQuery.append("$push", listItem);
UpdateResult updateResult = collection.updateOne(searchFilter, updateQuery);

在上面的查詢中,我們首先使用BasicDBObject創(chuàng)建了項(xiàng)目文檔。在searchQuery 的基礎(chǔ)上,對(duì)集合的文檔進(jìn)行過(guò)濾,并將值推送到數(shù)組中。

4.2. 使用 BSON 文檔

BSON文檔是訪問(wèn) Java 中的 MongoDB 文檔的新方法,它是使用較新的客戶端堆棧構(gòu)建的。org.bson.Document類不太復(fù)雜且更易于使用。

讓我們使用org.bson.Document 類將值推送到數(shù)組“ items”中:

Document item = new Document()
  .append("itemName1", "PIZZA MANIA")
  .append("quantity", 1).append("price", 800);
UpdateResult updateResult = collection.updateOne(Filters.eq("customerId", 1023), Updates.push("items", item));

在這種情況下,BSON的實(shí)現(xiàn)類似于使用DBObject 運(yùn)行的代碼,更新也將是相同的。在這里,我們使用updateOne方法僅更新單個(gè)文檔。

5. 使用 addToSet操作符

$addToSet運(yùn)算符也可用于將值壓入數(shù)組。僅當(dāng)數(shù)組中不存在該值時(shí),此運(yùn)算符才添加值。否則,它只會(huì)忽略它。而推送運(yùn)算符將推送值作為過(guò)濾條件以獲取匹配。

需要注意的一個(gè)關(guān)鍵點(diǎn)是 $addToSet 運(yùn)算符在重復(fù)項(xiàng)目的情況下不會(huì)推送值工作。另一方面,$push 運(yùn)算符只是將值推送到數(shù)組中,而不考慮任何其他條件。

5.1. 使用addToSet運(yùn)算符的 Shell 查詢

$addToSet 運(yùn)算符的 mongo shell 查詢類似于 $push 運(yùn)算符,但 $addToSet 不會(huì)在數(shù)組中插入重復(fù)值。

現(xiàn)在讓我們檢查一下 MongoDB 查詢,以使用&$addToset*將值推送到數(shù)組中:

db.orders.updateOne(
    {
        "customerId": 1023
    },
    {
        $addToSet: {
            "items":{
                "itemName": "PASTA",
                "quantity": 1,
                "price": 1000
            }
        }
    });

在這種情況下,輸出將如下所示:

{
    "acknowledged":true,
    "matchedCount":1,
    "modifiedCount":1
}

在這種情況下,我們使用了 $addToSet 運(yùn)算符,只有當(dāng)文檔是唯一的時(shí),才會(huì)將其推送到數(shù)組“items”中。

5.2. 使用addToSet運(yùn)算符的 Java 驅(qū)動(dòng)程序

$addToSet操作符提供了一種與推送操作符不同類型的數(shù)組更新操作:

Document item = new Document()
  .append("itemName1", "PIZZA MANIA")
  .append("quantity", 1).append("price", 800);
UpdateResult updateResult = collection
  .updateOne(Filters.eq("customerId", 1023), Updates.addToSet("items", item));
System.out.println("updateResult:- " + updateResult);

在上面的代碼中,首先我們創(chuàng)建了文檔“item”,在customerId過(guò)濾器的基礎(chǔ)上,updateOne方法會(huì)嘗試將文檔“item”推送到數(shù)組“items”中。

6. 結(jié)論

在本文中,我們學(xué)習(xí)了使用 $push$addToSet 運(yùn)算符將新值推送到數(shù)組中。首先,我們研究了 $push 運(yùn)算符在 MongoDB shell 查詢中的使用,然后我們討論了相應(yīng)的 Java 驅(qū)動(dòng)程序代碼。

總結(jié)

到此這篇關(guān)于MongoDB中的push操作詳解的文章就介紹到這了,更多相關(guān)MongoDB push操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot?整合mongoDB并自定義連接池的示例代碼

    SpringBoot?整合mongoDB并自定義連接池的示例代碼

    這篇文章主要介紹了SpringBoot?整合mongoDB并自定義連接池?,整合mongoDB的目的就是想用它給我們提供的mongoTemplate,它可以很容易的操作mongoDB數(shù)據(jù)庫(kù),對(duì)整合過(guò)程及實(shí)例代碼感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • 使用MongoDB進(jìn)行數(shù)據(jù)存儲(chǔ)的操作流程

    使用MongoDB進(jìn)行數(shù)據(jù)存儲(chǔ)的操作流程

    在現(xiàn)代應(yīng)用開(kāi)發(fā)中,數(shù)據(jù)存儲(chǔ)是一個(gè)至關(guān)重要的部分,隨著數(shù)據(jù)量的增大和復(fù)雜性的增加,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)有時(shí)難以應(yīng)對(duì)高并發(fā)和大數(shù)據(jù)量的處理需求,MongoDB作為一種高效的NoSQL數(shù)據(jù)庫(kù),逐漸成為了開(kāi)發(fā)者的首選,本文將介紹如何使用MongoDB進(jìn)行數(shù)據(jù)存儲(chǔ)
    2025-01-01
  • Java操作MongoDB數(shù)據(jù)庫(kù)示例分享

    Java操作MongoDB數(shù)據(jù)庫(kù)示例分享

    MongoDB是一個(gè)文檔型數(shù)據(jù)庫(kù),是NOSQL家族中最重要的成員之一,以下代碼封裝了MongoDB的基本操作。具體都在備注當(dāng)中,要仔細(xì)看哦
    2014-08-08
  • MongoDB中的一些坑(最好不要用)

    MongoDB中的一些坑(最好不要用)

    這篇文章主要介紹了MongoDB中的一些坑(最好不要用),本文總結(jié)了MongoDB 數(shù)據(jù)庫(kù)級(jí)鎖、建索引導(dǎo)致數(shù)據(jù)庫(kù)阻塞、不合理使用嵌入 embed document、不合理使用 Array 字段等4個(gè)坑,需要的朋友可以參考下
    2015-03-03
  • Navicat Premium連接mongodb詳細(xì)教程

    Navicat Premium連接mongodb詳細(xì)教程

    這篇文章主要介紹了Navicat Premium連接mongodb詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • MongoDB數(shù)據(jù)庫(kù)的安裝步驟

    MongoDB數(shù)據(jù)庫(kù)的安裝步驟

    MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。本文簡(jiǎn)單介紹下MongoDB數(shù)據(jù)庫(kù)的安裝
    2021-06-06
  • MongoDB中實(shí)現(xiàn)多表聯(lián)查的實(shí)例教程

    MongoDB中實(shí)現(xiàn)多表聯(lián)查的實(shí)例教程

    數(shù)據(jù)庫(kù)應(yīng)用在我們的生活中是很常見(jiàn)的,在編輯一些應(yīng)用以及軟件的時(shí)候都需要用到數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MongoDB中實(shí)現(xiàn)多表聯(lián)查的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • centos離線安裝mongodb-database-tools方法詳解

    centos離線安裝mongodb-database-tools方法詳解

    這篇文章主要介紹了centos離線安裝mongodb-database-tools方法詳解的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Windows 10下安裝最新版MongoDB的完整步驟

    Windows 10下安裝最新版MongoDB的完整步驟

    這篇文章主要給大家介紹了關(guān)于在Windows 10下安裝最新版MongoDB的完整步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • MongoDB 導(dǎo)出導(dǎo)入備份恢復(fù)數(shù)據(jù)詳解及實(shí)例

    MongoDB 導(dǎo)出導(dǎo)入備份恢復(fù)數(shù)據(jù)詳解及實(shí)例

    這篇文章主要介紹了MongoDB 導(dǎo)出導(dǎo)入備份恢復(fù)數(shù)據(jù)詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評(píng)論

诏安县| 密山市| 广丰县| 互助| 龙山县| 合水县| 鞍山市| 闻喜县| 长阳| 无极县| 大姚县| 漳州市| 金秀| 黄陵县| 内黄县| 启东市| 六枝特区| 新邵县| 东丽区| 文昌市| 玛纳斯县| 顺义区| 天柱县| 大丰市| 纳雍县| 虹口区| 綦江县| 阜新| 黎城县| 江都市| 大埔县| 洞头县| 上犹县| 潜江市| 蕲春县| 永登县| 阳朔县| 方城县| 富裕县| 石狮市| 安阳市|