一个少妇满足三个老头在线观看,锕锕锕锕锕锕锕好痛视频,亚洲人成网站在线播放2019

<center id="pt2l2"></center>
<tr id="pt2l2"></tr>
  • <big id="pt2l2"></big>

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

        1. 概述

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

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

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

        2. 數據庫初始化

        首先,讓我們建立一個新的數據庫baeldung和一個樣本集合,orders:

        use baeldung;
        db.createCollection(orders);
        

        現在讓我們使用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
                    } 
                  ]
            }
        ]);
        

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

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

        至此,我們已經成功建立了數據庫和集合。我們將在所有示例中使用這個數據庫和集合。

        3. 使用 Mongo Query 進行推送操作

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

        現在讓我們看看使用*$push*運算符的 shell 查詢:

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

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

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

        現在讓我們查看customerId 為 1023的文檔。在這里,我們可以看到新項目插入到列表“ 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驅動代碼進行推送操作

        到目前為止,我們已經討論了將文檔推送到數組中的 MongoDB shell 查詢?,F在讓我們使用 Java 代碼實現推送更新查詢。

        在執行更新操作之前,我們先連接到 baeldung數據庫中的orders集合:

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

        在這里,在這種情況下,我們連接到在 localhost 的默認端口 27017 上運行的 MongoDB。

        4.1. 使用 DBObject

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

        現在讓我們看看 Java 驅動程序代碼以將新值插入到數組中:

        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創建了項目文檔。在searchQuery 的基礎上,對集合的文檔進行過濾,并將值推送到數組中。

        4.2. 使用 BSON 文檔

        BSON文檔是訪問 Java 中的 MongoDB 文檔的新方法,它是使用較新的客戶端堆棧構建的。org.bson.Document類不太復雜且更易于使用。

        讓我們使用org.bson.Document 類將值推送到數組“ 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的實現類似于使用DBObject 運行的代碼,更新也將是相同的。在這里,我們使用updateOne方法僅更新單個文檔。

        5. 使用 addToSet操作符

        $addToSet運算符也可用于將值壓入數組。僅當數組中不存在該值時,此運算符才添加值。否則,它只會忽略它。而推送運算符將推送值作為過濾條件以獲取匹配。

        需要注意的一個關鍵點是 $addToSet 運算符在重復項目的情況下不會推送值工作。另一方面,$push 運算符只是將值推送到數組中,而不考慮任何其他條件。

        5.1. 使用addToSet運算符的 Shell 查詢

        $addToSet 運算符的 mongo shell 查詢類似于 $push 運算符,但 $addToSet 不會在數組中插入重復值。

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

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

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

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

        在這種情況下,我們使用了 $addToSet 運算符,只有當文檔是唯一的時,才會將其推送到數組“items”中。

        5.2. 使用addToSet運算符的 Java 驅動程序

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

        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);
        

        在上面的代碼中,首先我們創建了文檔“item”,在customerId過濾器的基礎上,updateOne方法會嘗試將文檔“item”推送到數組“items”中。

        6. 結論

        在本文中,我們學習了使用 $push$addToSet 運算符將新值推送到數組中。首先,我們研究了 $push 運算符在 MongoDB shell 查詢中的使用,然后我們討論了相應的 Java 驅動程序代碼。

        總結

        到此這篇關于MongoDB中的push操作詳解的文章就介紹到這了,更多相關MongoDB push操作內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

        若文章對您有幫助,幫忙點個贊!

        0
        0
        發布時間 2022-11-14 06:09:28
        0 條回復(回復會通過微信通知作者)
        點擊加載更多評論
        登錄 后再進行評論
        (微信掃碼即可登錄,無需注冊)
        一个少妇满足三个老头在线观看,锕锕锕锕锕锕锕好痛视频,亚洲人成网站在线播放2019