Bagaimana cara mentransfer data dari satu koleksi ke koleksi lainnya di mongodb?

MongoDB adalah Sistem Manajemen Database non-relasional yang bersifat Open Source dan Cross-Platform. MongoDB, yang didirikan pada tahun 2009, menggunakan Model Basis Data Berorientasi Dokumen untuk mengatur data ke dalam dokumen dan koleksi daripada tabel. Hal ini memungkinkan untuk menyimpan berbagai jenis data. Selain itu, didistribusikan di bawah Lisensi Publik Sisi Server (SSPL), yang mendukung mekanisme baru untuk menyimpan dan mengambil data dalam jumlah besar. MongoDB adalah basis data yang mudah dan sederhana untuk dikonfigurasi yang memberikan kinerja tinggi, skalabilitas otomatis, dan ketersediaan tinggi

Bagaimana Cara Bergabung dengan Dua Koleksi di MongoDB?

MongoDB memiliki beberapa masalah dengan menautkan data dari satu koleksi ke koleksi lainnya kecuali jika Anda menggunakan fungsi Script Query sederhana. Untuk mengatasi masalah ini, kami memperkenalkan konsep JOIN, yang memfasilitasi hubungan antar data

Kita dapat menggabungkan dokumen pada koleksi di MongoDB dengan menggunakan fungsi $lookup (Agregasi). $lookup(Aggregation) membuat gabungan kiri luar dengan koleksi lain dan membantu memfilter data dari data gabungan. Jika dokumen adalah bagian dari koleksi "bergabung", fungsi $lookup (Agregasi) akan mengembalikan dokumen dalam bentuk subarray dari koleksi asli

Sintaksis

Dalam operasi GABUNG MongoDB, tujuannya adalah untuk menghubungkan satu set data ke set data lainnya. Untuk menggabungkan dua koleksi, kami menggunakan operator $lookup, yang sintaksnya ditentukan di bawah ini

{
   $lookup:
     {
       from: <collection to join>,
       localField: <field from the input documents>,
       foreignField: <field from the documents of the "from" collection>,
       as: <output array field>
     }
}

Fungsi $lookup menerima dokumen yang berisi bidang-bidang ini

  • Dari. Ini menjelaskan koleksi dalam database identik yang harus digunakan untuk mengeksekusi gabungan, tetapi dengan batasan koleksi sharded
  • Bidang Lokal. Bidang ini mewakili bidang input dari dokumen ke tahap $lookup, yang melakukan pencocokan kesetaraan antara bidang lokal dan bidang asing dari koleksi 'dari. ' Jika dokumen input tidak memiliki nilai untuk bidang lokal, maka operator ini akan memberikan nilai nol pada bidang tersebut untuk tujuan pencocokan
  • foreignField. Bidang ini berisi data dari dokumen dalam koleksi 'dari' yang dapat digunakan untuk mencocokkan persamaan antara bidang luar negeri dan bidang lokal. Ketika dokumen dalam kumpulan 'dari' tidak memiliki nilai bidang luar, operator ini akan menetapkan bidang ke nol untuk tujuan pencocokan lebih lanjut
  • Sebagai. Ini menentukan nama bidang larik yang perlu ditambahkan ke dokumen input. Terlebih lagi, bidang larik baru juga menyertakan dokumen yang cocok dari koleksi 'dari. ' Bidang yang berlaku akan ditimpa jika nama yang disebutkan sudah ada di dokumen input

Dalam SQL, ketika operasi GABUNG dilakukan, hasilnya selalu berupa baris baru yang menggabungkan semua bidang yang ada dari tabel induk dan tabel asing. Namun, di MongoDB, dokumen keluaran dilengkapi dengan serangkaian dokumen koleksi asli

Langkah-langkah untuk Bergabung dengan Dua Koleksi di MongoDB

Untuk melakukan MongoDB Menggabungkan dua koleksi, Anda harus menggunakan operator $lookup. Ini didefinisikan sebagai tahap yang mengeksekusi gabungan luar kiri dengan koleksi lain dan membantu memfilter data dari dokumen gabungan

Misalnya, jika pengguna meminta semua nilai dari semua siswa, maka kueri di bawah ini dapat ditulis

Students.aggregate([{
$lookup: {
From: ‘Grades’,
LocalField: ‘Student_id’,
foreignField: ‘Stud_id’,
as: ‘Student_grade’
}}]);
_

Dari kueri di atas, kita dapat melihat bahwa parameter awal bernama 'from' menentukan koleksi yang akan digabungkan dengan yang sekarang, dan 'localField' menentukan kunci dalam koleksi saat ini, yang akan dicocokkan dengan asing . Untuk mengambil data, Student_id dari Students dan stud_id dari Grades dicocokkan dan digabungkan. Selain itu, parameter akhir 'as' ditambahkan sebagai nama kode ke data

Perlu dicatat bahwa di sini, di dalam setiap rekaman data keluaran dari kueri di atas, data dari tabel gabungan juga muncul sebagai elemen utama di dalam larik. Demikian pula, setiap baris dari data keluaran dari kueri di atas akan ditampilkan sebagai berikut

{_ID: String, Quantity: Number, Student_id: String, Student_grade: Array, Stud_id: String, Student_name: String}

Data yang digabungkan dengan kueri akan menjadi elemen pertama dalam larik nilai

Contoh

Contoh berikut membuat sampel dataset dan menyisipkan beberapa dokumen untuk melakukan MongoDB Menggabungkan dua koleksi

db.address.insertMany(
    [
        {
            "name": "Bob",
            "blk_no": 22,
            "street" : "dewey street",
            "city" : "United States of America"
        },
        {
            "name": "Jack",
            "blk_no": 25,
            "street" : "gordon street",
            "city" : "New Zealand"
        }
    ]
);
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("613594cdb59313217373673c"),
                ObjectId("613594cdb59313217373673d")
        ]
}

Beberapa dokumen dimasukkan ke dalam koleksi alamat. Sekarang mari tambahkan beberapa dokumen ke koleksi lain

db.userInfo.insertMany(
    [
        {
            "contact_name": "Bob",
            "age": 27,
            "sex" : "male",
            "citizenship" : "Filipino"
        },
        {
            "contact_name": "Jack",
            "age": 22,
            "sex" : "male",
            "citizenship" : "Filipino"
        }
    ]
);
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("613594dbb59313217373673e"),
                ObjectId("613594dbb59313217373673f")
        ]
}
_

Koleksi userInfo diisi dengan beberapa dokumen

Penting untuk diperhatikan bahwa bidang nama dalam kumpulan alamat memiliki nilai yang sama dengan bidang nama_kontak dalam kumpulan info pengguna

Menerapkan fungsi $lookup, kami menemukan kecocokan persamaan sebagai berikut

098db.userInfo.aggregate([
    { $lookup:
        {
           from: "address",
           localField: "contact_name",
           foreignField: "name",
           as: "address"
        }
    }
]).pretty();
Output:
{
        "_id" : ObjectId("613594dbb59313217373673e"),
        "contact_name" : "Bob",
        "age" : 27,
        "sex" : "male",
        "citizenship" : "Filipino",
        "address" : [
                {
                        "_id" : ObjectId("613594cdb59313217373673c"),
                        "name" : "Bob",
                        "blk_no" : 22,
                        "street" : "dewey street",
                        "city" : "United States of America"
                }
        ]
}
{
        "_id" : ObjectId("613594dbb59313217373673f"),
        "contact_name" : "Jack",
        "age" : 22,
        "sex" : "male",
        "citizenship" : "Filipino",
        "address" : [
                {
                        "_id" : ObjectId("613594cdb59313217373673d"),
                        "name" : "Jack",
                        "blk_no" : 25,
                        "street" : "gordon street",
                        "city" : "New Zealand"
                }
        ]
}

Kami mencocokkan bidang name dan bidang contact_name dari dua koleksi ini. Kemudian, Anda dapat melihat keluaran tempat kami menggabungkan dua koleksi. Ini adalah cara termudah untuk melakukan MongoDB menggabungkan dua koleksi dari database yang sama

Sederhanakan ETL & Analisis MongoDB Menggunakan Pipa Data Tanpa Kode Hevo

Hevo Data adalah Pipa Data Tanpa Kode yang menawarkan solusi terkelola sepenuhnya untuk menyiapkan Integrasi Data untuk 100+ Sumber Data (termasuk 40+ sumber Gratis) dan memungkinkan Anda memuat data secara langsung dari sumber seperti MongoDB ke Gudang Data atau Tujuan . Ini akan mengotomatiskan aliran data Anda dalam hitungan menit tanpa menulis baris kode apa pun. Arsitekturnya yang toleran terhadap kesalahan memastikan bahwa data Anda aman dan konsisten. Hevo memberi Anda solusi yang benar-benar efisien dan sepenuhnya otomatis untuk mengelola data secara real-time dan selalu memiliki data yang siap dianalisis.  

Mulailah dengan Hevo Gratis

Mari kita lihat beberapa fitur penting dari Hevo

  • Dikelola Sepenuhnya. Tidak memerlukan manajemen dan pemeliharaan karena Hevo adalah platform yang sepenuhnya otomatis
  • Transformasi Data. Ini menyediakan antarmuka sederhana untuk menyempurnakan, memodifikasi, dan memperkaya data yang ingin Anda transfer.  
  • Waktu sebenarnya. Hevo menawarkan migrasi data waktu nyata. Jadi, data Anda selalu siap untuk dianalisis
  • Manajemen Skema. Hevo dapat secara otomatis mendeteksi skema data yang masuk dan memetakannya ke skema tujuan
  • Konektor. Hevo mendukung 100+ Integrasi ke platform SaaS FTP/SFTP, File, Database, alat BI, dan Native REST API & Konektor Webhooks. Ini mendukung berbagai tujuan termasuk Google BigQuery, Amazon Redshift, Snowflake, Firebolt, Gudang Data; .   
  • Aman. Hevo memiliki arsitektur yang toleran terhadap kesalahan yang memastikan bahwa data ditangani dengan cara yang aman dan konsisten tanpa kehilangan data
  • Hevo Dibangun Sesuai Skala. Saat jumlah sumber dan volume data Anda bertambah, Hevo menskalakan secara horizontal, menangani jutaan rekaman per menit dengan latensi yang sangat kecil
  • Pemantauan Langsung. Pemantauan lanjutan memberi Anda tampilan satu atap untuk melihat semua aktivitas yang terjadi dalam Data Pipelines
  • Dukungan Langsung. Tim Hevo tersedia sepanjang waktu untuk memberikan dukungan luar biasa kepada pelanggannya melalui obrolan, email, dan panggilan dukungan
Daftar di sini untuk Uji Coba Gratis 14 Hari

Bagaimana MongoDB Menggabungkan Dua Koleksi Dengan Ketentuan Khusus menggunakan Pipeline & $Lookup?

$lookup digunakan dengan pipeline untuk melakukan MongoDB menggabungkan dua koleksi berdasarkan kondisi tertentu yang memerlukan ekspresi

Misalnya, jika kita ingin mendapatkan semua pengguna dengan pesanan lebih dari lima

User.aggregate([{
$lookup: {
 from: 'Orders',
 let: {ID: '$ID'},
 pipeline: [{$match: {
  $expr: {
   $eq: [
    '$User_ID', '$$ID'
   ],
   $gt: [
    '$quantity', 5
   ]
  }}}]
  as: 'OrdersData'
}}]);
_

Kita dapat dengan cepat menggabungkan tabel menggunakan pipeline dalam $lookup

Bagaimana Mongodb Menggabungkan Dua Koleksi Dengan Klausul Where?

Metode agregat() MongoDB menggabungkan dua koleksi dengan klausa where. Dengan melakukan ini, kita dapat mengkorelasikan dua subkueri

Operator pipa juga digunakan untuk menerapkan kondisi tersebut. Mari kita lihat contoh berikut

Contoh

Dalam contoh ini, kami membuat dua koleksi, lalu kami menerapkan klausa where untuk menggabungkannya menggunakan agregasi $lookup

Bagaimana cara mentransfer data dari satu koleksi ke koleksi lainnya di mongodb?
Sumber Gambar

Dua koleksi, pesanan, dan gudang dibuat, dan beberapa dokumen disimpan. Kami sekarang menggabungkan kedua koleksi menggunakan operasi agregasi

Bagaimana cara mentransfer data dari satu koleksi ke koleksi lainnya di mongodb?
Sumber Gambar

Seperti yang Anda lihat di kondisi klausa where, kami menggunakan fungsi pipa, tetapkan stock_item sama dengan order_item, lalu tambahkan stock_data jika jumlah stok lebih signifikan daripada order_qty

Ini adalah cara termudah untuk menerapkan klausa di mana untuk melakukan MongoDB Gabungkan dua koleksi. Namun, Anda dapat mempelajari cara lain untuk melakukan ini dengan lebih banyak berlatih

Menggunakan Kompas Untuk Menggabungkan Dua Koleksi Di MongoDB

GUI Kompas MongoDB memungkinkan Anda untuk membuat kueri, mengumpulkan, dan menganalisis data MongoDB Anda menggunakan lingkungan visual.  

Fungsi agregasi $lookup digunakan untuk melakukan MongoDB Menggabungkan dua koleksi untuk database yang sama

Contoh

Dalam contoh ini, kita akan mempelajari cara menggabungkan dua koleksi database menggunakan agregasi $lookup

Di Kompas, Anda dapat menerapkan operasi agregasi dengan mengikuti langkah-langkah berikut

  • Buka Kompas MongoDB
Bagaimana cara mentransfer data dari satu koleksi ke koleksi lainnya di mongodb?
Sumber Gambar
  • Jika diinginkan, buat koleksi dan database baru
Bagaimana cara mentransfer data dari satu koleksi ke koleksi lainnya di mongodb?
  • Kami membuat dua koleksi untuk genera dan film di database pengujian, dan kami juga memasukkan beberapa dokumen ke dalam kedua koleksi tersebut
    • Kami sekarang menggabungkan dua koleksi menggunakan fungsi agregasi
    • Di halaman Dokumen, klik Agregasi
Bagaimana cara mentransfer data dari satu koleksi ke koleksi lainnya di mongodb?
Sumber Gambar

Ada "tahap alur" setelah Anda memilih Agregasi di mana ada daftar tarik-turun dan di mana Anda harus memilih operasi mana yang akan dilakukan;

Beberapa bidang dalam koleksi perlu disediakan dalam fungsi ini. Pertama, Anda menulis nama koleksi yang ingin Anda gabungkan (film) ke bidang 'dari', dan menulis bidang koleksi lokal (daftar genre) dan bidang "kumpulan formulir" (ketik) di bidang lokal dan

Anda dapat melihat output di sisi kanan input setelah Agregasi

Berikut adalah cara sederhana untuk menerapkan agregasi $lookup menggunakan kompas MongoDB. Dengan lebih banyak latihan, Anda akan lebih memahami operasi agregasi dan lebih memahami lingkungan kompas

Kesimpulan

Salah satu perbedaan mendasar antara database SQL dan NoSQL adalah operator JOIN. Operasi GABUNG dapat dilakukan dalam database SQL antara dua tabel di dalam database yang sama atau berbeda. Di sisi lain, operasi GABUNG di MongoDB dapat dilakukan antar koleksi yang diimplementasikan dalam database serupa, meskipun kasusnya bervariasi

Panduan ini memperkenalkan Anda pada beberapa operasi paling penting untuk melakukan MongoDB Join Two Collections dengan contoh.  

Kunjungi Situs Web kami untuk Menjelajahi Hevo

Hevo Data, No-code Data Pipeline memberi Anda solusi yang konsisten dan andal untuk mengelola transfer data antara berbagai sumber seperti MongoDB dan berbagai Tujuan yang Diinginkan, dengan beberapa klik. Hevo Data dengan integrasi kuat dengan 100+ sumber (termasuk 40+ sumber gratis) memungkinkan Anda untuk tidak hanya mengekspor data dari sumber data yang Anda inginkan & memuatnya ke tujuan pilihan Anda, tetapi juga mengubah & memperkaya data Anda untuk menjadikannya analisis

Ingin mencoba Hevo? . Anda juga dapat melihat harga yang tidak ada duanya yang akan membantu Anda memilih paket yang tepat untuk kebutuhan bisnis Anda

Bagaimana cara mentransfer data dari satu koleksi ke koleksi lainnya di MongoDB?

Dalam MongoDB, metode copyTo() digunakan untuk menyalin semua dokumen dari satu koleksi(Koleksi sumber) ke koleksi lain(Koleksi target .

Bagaimana cara menyalin bidang dari satu koleksi ke koleksi lainnya di MongoDB?

Anda seharusnya dapat melakukan ini dengan kerangka kerja agregasi. Anda dapat $match (jika perlu), lalu $project untuk mendapatkan bidang dari dokumen saat ini yang ingin Anda gunakan, $addFields untuk membuat bidang baru dan akhirnya $out untuk menyimpan yang baru . .

Bagaimana cara menyalin satu koleksi ke koleksi lainnya di kompas MongoDB?

Anda dapat menyisipkan dokumen baru dengan mengkloning skema dan nilai dokumen yang ada dalam koleksi. Untuk menggandakan dokumen, arahkan kursor ke dokumen yang diinginkan dan klik tombol Kloning . Saat Anda mengklik tombol Kloning, Kompas membuka dialog penyisipan dokumen dengan skema dan nilai yang sama dengan dokumen yang dikloning.

Bagaimana cara menyalin koleksi dari satu database ke database lainnya?

Untuk menyalin koleksi, Anda dapat menggandakannya di database yang sama, lalu memindahkan koleksi yang digandakan . Untuk mengkloning. > gunakan db1 beralih ke db db1 > db. sumber_koleksi.