MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Operasi Dorong di MongoDB

1. Ikhtisar

Dalam tutorial ini, kami akan memperkenalkan cara memasukkan dokumen ke dalam array di MongoDB. Selain itu, kita akan melihat berbagai aplikasi $push dan $addToset operator untuk menambahkan nilai ke dalam array.

Pertama, kita akan membuat database sampel, koleksi, dan memasukkan data dummy ke dalamnya. Selanjutnya, kita akan melihat beberapa contoh dasar untuk memperbarui dokumen menggunakan $push operator. Nanti, kita juga akan membahas berbagai kasus penggunaan $push dan $addtoSet operator.

Mari selami lebih dalam berbagai metode untuk menyisipkan dokumen ke dalam array di MongoDB.

2. Inisialisasi Basis Data

Pertama-tama, mari kita siapkan database baru baeldung dan koleksi sampel, pesanan :

use baeldung;
db.createCollection(orders);

Sekarang mari tambahkan beberapa dokumen ke dalam koleksi dengan menggunakan insertMany metode:

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

Jika penyisipan berhasil, perintah di atas akan mencetak JSON yang mirip dengan yang ditunjukkan di bawah ini:

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

Sampai sekarang, kami telah berhasil mengatur database dan koleksi. Kami akan menggunakan database dan koleksi ini untuk semua contoh.

3. Operasi Dorong Menggunakan Query Mongo

MongoDB menyediakan berbagai jenis operator array untuk memperbarui array dalam dokumen MongoDB. $push operator di MongoDB menambahkan nilai di akhir larik. Bergantung pada jenis kueri, kita dapat menggunakan $push operator dengan metode seperti updateOne , perbarui Banyak , temukanDanModifikasi , dll.

Sekarang mari kita lihat kueri shell menggunakan $push operator:

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

Kueri di atas akan mengembalikan dokumen berikut:

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

Sekarang mari kita periksa dokumen dengan customerId  1023. Di sini, kita dapat melihat bahwa item baru disisipkan di akhir daftar “item “:

{
    "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. Operasi Dorong Menggunakan Kode Driver Java

Sampai sekarang, kita telah membahas permintaan shell MongoDB untuk mendorong dokumen ke dalam array. Sekarang mari kita implementasikan kueri pembaruan push menggunakan kode Java.

Sebelum melakukan operasi pembaruan, pertama-tama mari kita sambungkan ke pesanan koleksi di baeldung basis data:

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

Di sini, dalam hal ini, kami menghubungkan ke MongoDB yang berjalan pada port default 27017 di localhost.

4.1. Menggunakan DBObject

Driver MongoDB Java menyediakan dukungan untuk DBObject dan BSON dokumen. Di sini, objek DBO adalah bagian dari driver lama MongoDB, tetapi tidak digunakan lagi di versi MongoDB yang lebih baru.

Sekarang mari kita lihat kode driver Java untuk memasukkan nilai baru ke dalam array:

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

Dalam kueri di atas, pertama-tama kita membuat dokumen item menggunakan BasicDBObject . Berdasarkan searchQuery, dokumen koleksi akan difilter, dan nilainya akan dimasukkan ke dalam larik.

4.2. Menggunakan BSON Dokumen

BSON Dokumen adalah cara baru untuk mengakses dokumen MongoDB di Java yang dibangun dengan tumpukan klien yang lebih baru. org.bson.Document kelas tidak terlalu rumit dan lebih mudah digunakan.

Mari gunakan org.bson.Document  class untuk memasukkan nilai ke dalam larik “item” :

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

Dalam hal ini, implementasi BSON mirip dengan kode yang dijalankan menggunakan DBObject, dan pembaruan juga akan sama. Di sini, kami menggunakan updateOne metode untuk memperbarui hanya satu dokumen.

5. Menggunakan addToSet Operator

$addToSet operator juga dapat digunakan untuk mendorong nilai dalam array. Operator ini menambahkan nilai hanya jika nilai itu tidak ada dalam larik. Jika tidak, itu hanya akan mengabaikannya. Sedangkan operator push akan mendorong nilai sebagai syarat filter mendapatkan kecocokan.

Satu poin penting yang perlu diperhatikan adalah $addToSet operator tidak mendorong nilai berfungsi dalam kasus item duplikat. Di sisi lain, $operator push hanya mendorong nilai ke dalam array terlepas dari kondisi lainnya.

5.1. Kueri Shell Menggunakan addToSet Operator

Kueri mongo shell dari $addToSet operator mirip dengan $push operator, tetapi $addToSet tidak memasukkan nilai duplikat dalam larik.

Sekarang mari kita periksa kueri MongoDB untuk mendorong nilai ke dalam array menggunakan $addToset :

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

Dalam hal ini, outputnya adalah sebagai berikut:

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

Dalam hal ini, kami menggunakan $addToSet operator, dan dokumen akan didorong ke array "item" hanya jika unik.

5.2. Driver Java Menggunakan addToSet Operator

$addToSet operator menyediakan jenis operasi pembaruan larik yang berbeda dibandingkan dengan operator push:

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

Pada kode di atas, pertama kita buat dokumen “item “, dan berdasarkan customerId filter, updateOne metode akan mencoba untuk mendorong dokumen “item ” ke dalam larik “item “.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cara menanyakan objek anak di mongodb

  2. Koneksi database dinamis ke mongodb atau luwak dari nodejs

  3. Membuat Indeks Multifield di Mongoose / MongoDB

  4. Mongodb mencocokkan karakter beraksen sebagai karakter dasar

  5. Alat MongoDB Dari Komunitas yang Melengkapi ClusterControl