亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
Ini tidak selalu berlaku ...
agregasi mongoDB
Letakkan semuanya bersama -sama
untuk carian rekursif. Peringkat
peringkat untuk menapis dan menukar dokumen.
Bolehkah saya menyambungkan pelbagai koleksi di MongoDB?
Bagaimana menangani nilai null atau hilang semasa menggunakan sambungan MongoDB?
Bolehkah saya menggunakan sambungan mongoDB dengan koleksi sharded?
bagaimana menyusun dokumen yang disambungkan di MongoDB?
Bolehkah saya menggunakan sambungan MongoDB dengan find() kaedah?
Bagaimana untuk menyahpepijat atau menyelesaikan kegagalan sambungan MongoDB?
Rumah Peranti teknologi industri IT Menggunakan Join In MongoDB NoSQL Pangkalan Data

Menggunakan Join In MongoDB NoSQL Pangkalan Data

Feb 18, 2025 pm 12:59 PM

Using JOINs in MongoDB NoSQL Databases

mata teras

    MongoDB, pangkalan data NoSQL, memperkenalkan pengendali
  • baru dalam versi 3.2, yang boleh melakukan operasi seperti kiri-join pada dua atau lebih set, dengan itu mencapai data yang serupa dengan pangkalan data relasi. Walau bagaimanapun, pengendali ini terhad untuk digunakan dalam operasi agregat, yang lebih kompleks dan biasanya lebih perlahan daripada pertanyaan carian mudah. $lookup
  • operator MongoDB memerlukan empat parameter:
  • (masukkan medan carian dalam dokumen), $lookup (koleksi yang akan disambungkan), localField (bidang yang boleh didapati dalam koleksi from) dan foreignField (nama medan output). Pengendali ini boleh digunakan dalam pertanyaan agregat untuk memadankan jawatan, menyusun mengikut urutan, mengehadkan bilangan item, sambungkan data pengguna, array pengguna meratakan dan mengembalikan hanya medan yang diperlukan. from as Walaupun pengendali MongoDB
  • berguna dan boleh membantu menguruskan sedikit data relasi dalam pangkalan data NoSQL, ia bukan pengganti untuk klausa gabungan yang lebih kuat dalam SQL. Jika dokumen pengguna dipadamkan di MongoDB, dokumen pos yatim akan dikekalkan, menunjukkan kekurangan kekangan. Oleh itu, jika pengendali
  • sering digunakan, ia mungkin menunjukkan bahawa storan data yang salah digunakan, dan pangkalan data relasi (SQL) mungkin lebih sesuai. $lookup $lookup
Terima kasih kepada Julian Motz atas bantuan semakan rakan sebaya.

Using JOINs in MongoDB NoSQL Databases Salah satu perbezaan terbesar antara pangkalan data SQL dan NoSQL adalah menyertai. Dalam pangkalan data relasi, SQL menyertai klausa membolehkan anda menggabungkan baris dari dua atau lebih jadual menggunakan medan yang sama di antara mereka. Sebagai contoh, jika anda mempunyai jadual buku dan penerbit, anda boleh menulis arahan SQL berikut:


dengan kata lain, jadual buku mempunyai medan penerbit_id yang merujuk medan ID dalam jadual penerbit.

SELECT book.title, publisher.name
FROM book
LEFT JOIN book.publisher_id ON publisher.id;
Ini praktikal kerana penerbit tunggal dapat menyediakan beribu -ribu buku. Jika kita perlu mengemas kini butiran penerbit pada masa akan datang, kita boleh menukar rekod individu. Redundansi data diminimumkan kerana kami tidak perlu mengulangi maklumat penerbit untuk setiap buku. Teknologi ini dipanggil penyeragaman.

pangkalan data SQL menyediakan pelbagai penyeragaman dan kekangan untuk memastikan penyelenggaraan hubungan.

nosql == Tidak bergabung?

Ini tidak selalu berlaku ...

Pangkalan data berorientasikan dokumen (seperti MongoDB) direka untuk menyimpan data de-normal. Sebaik -baiknya, tidak ada hubungan antara set. Jika data yang sama perlu dalam dua atau lebih dokumen, ia mesti diulang.

Ini boleh mengecewakan kerana hampir tidak ada keadaan di mana anda

tidak akan memerlukan data hubungan. Nasib baik, MongoDB 3.2 memperkenalkan pengendali

baru yang boleh melakukan operasi seperti kiri-Join pada dua atau lebih set. Tetapi ada masalah ...

agregasi mongoDB

$lookup hanya dibenarkan digunakan dalam operasi agregat. Fikirkannya sebagai saluran paip satu siri pengendali yang memohon, penapis dan hasil kumpulan. Output satu pengendali digunakan sebagai input kepada pengendali seterusnya.

Agregasi lebih sukar difahami daripada pertanyaan carian mudah dan biasanya berjalan lebih perlahan. Walau bagaimanapun, mereka berkuasa dan merupakan pilihan yang berharga untuk operasi carian kompleks.

Adalah lebih baik menggunakan contoh untuk menerangkan pengagregatan. Katakan kami membuat platform media sosial dengan koleksi pengguna. Ia menyimpan butiran setiap pengguna dalam dokumen yang berasingan. Contohnya:

SELECT book.title, publisher.name
FROM book
LEFT JOIN book.publisher_id ON publisher.id;
kita boleh menambah seberapa banyak bidang yang kita mahu, tetapi semua dokumen MongoDB memerlukan medan

dengan nilai yang unik. _id Sama seperti kunci utama SQL, mereka akan dimasukkan secara automatik jika diperlukan. _id

rangkaian sosial kami kini memerlukan koleksi jawatan yang menyimpan sejumlah besar kemas kini yang berwawasan dari pengguna. Dokumen menyimpan teks, tarikh, penarafan dan rujukan kepada pengguna yang menulisnya dalam bidang

: user_id

{
  "_id": ObjectID("45b83bda421238c76f5c1969"),
  "name": "User One",
  "email": "userone@email.com",
  "country": "UK",
  "dob": ISODate("1999-09-13T00:00:00.000Z")
}
kami kini ingin memaparkan dua puluh jawatan terakhir yang dinilai "penting" oleh semua pengguna dalam urutan terbalik masa. Setiap dokumen yang dikembalikan hendaklah mengandungi teks, masa jawatan, dan nama dan negara pengguna yang berkaitan.

pertanyaan agregasi MongoDB meluluskan pelbagai operator saluran paip yang menentukan setiap operasi dalam urutan. Pertama, kita perlu menggunakan penapis

untuk mengekstrak semua dokumen dengan penilaian yang betul dari koleksi pos: $match

{
  "_id": ObjectID("17c9812acff9ac0bba018cc1"),
  "user_id": ObjectID("45b83bda421238c76f5c1969"),
  "date": ISODate("2016-09-05T03:05:00.123Z"),
  "text": "My life story so far",
  "rating": "important"
}
kita kini perlu menyusun item yang sepadan dengan urutan terbalik dengan menggunakan pengendali

: $sort

{ "$match": { "rating": "important" } }
Oleh kerana kita hanya memerlukan dua puluh jawatan, kita boleh menggunakan peringkat

supaya MongoDB hanya perlu memproses data yang kita mahu: $limit

{ "$sort": { "date": -1 } }
kini kita boleh menggunakan operator

baru untuk menyambungkan data dari koleksi pengguna. Ia memerlukan objek dengan empat parameter: $lookup

  • : Masukkan medan carian dalam dokumen localField
  • : koleksi yang akan disambungkan from
  • : bidang yang terdapat dalam koleksi foreignField from
  • : Nama medan output. as
Oleh itu, pengendali kami adalah:

{ "$limit": 20 }
Ini akan mewujudkan medan baru dalam output kami yang dipanggil

. Ia mengandungi array di mana setiap nilai sepadan dengan dokumen pengguna: userinfo

{ "$lookup": {
  "localField": "user_id",
  "from": "user",
  "foreignField": "_id",
  "as": "userinfo"
} }
Kami mempunyai hubungan satu sama lain

dan post.user_id kerana jawatan hanya boleh mempunyai satu pengarang. Oleh itu, array user._id kami akan sentiasa mengandungi hanya satu item. Kita boleh menggunakan pengendali userinfo untuk memecahkannya ke dalam subdokumen: $unwind

"userinfo": [
  { "name": "User One", ... }
]
output kini akan ditukar kepada format yang lebih praktikal, dengan pengendali lain yang tersedia untuk memohon:

{ "$unwind": "$userinfo" }
Akhirnya, kita boleh menggunakan peringkat

dalam saluran paip untuk mengembalikan teks, masa pos, nama pengguna dan negara: $project

SELECT book.title, publisher.name
FROM book
LEFT JOIN book.publisher_id ON publisher.id;

Letakkan semuanya bersama -sama

pertanyaan agregat akhir kami sepadan dengan catatan, macam -macam dalam urutan, had ke dua puluh item terkini, menghubungkan data pengguna, meratakan susunan pengguna dan mengembalikan hanya medan yang diperlukan. Perintah Lengkap:

{
  "_id": ObjectID("45b83bda421238c76f5c1969"),
  "name": "User One",
  "email": "userone@email.com",
  "country": "UK",
  "dob": ISODate("1999-09-13T00:00:00.000Z")
}

Hasilnya adalah koleksi sehingga dua puluh dokumen. Contohnya:

{
  "_id": ObjectID("17c9812acff9ac0bba018cc1"),
  "user_id": ObjectID("45b83bda421238c76f5c1969"),
  "date": ISODate("2016-09-05T03:05:00.123Z"),
  "text": "My life story so far",
  "rating": "important"
}
hebat! Saya akhirnya boleh beralih ke NoSQL!

MongoDB

berguna dan berkuasa, tetapi juga contoh asas ini memerlukan pertanyaan agregasi yang kompleks. Ia tidak dapat menggantikan klausa gabungan yang lebih kuat dalam SQL. MongoDB juga tidak memberikan kekangan; $lookup

Idealnya, pengendali

harus jarang diperlukan. Sekiranya anda memerlukannya dengan kerap, anda mungkin menggunakan kedai data yang salah ... $lookup

Jika anda mempunyai data hubungan, sila gunakan pangkalan data hubungan (SQL)!

iaitu,

adalah tambahan yang popular kepada MongoDB 3.2. Ia mengatasi beberapa masalah yang lebih mengecewakan apabila menggunakan sedikit data relasi dalam pangkalan data NoSQL. $lookup

Soalan Lazim Mengenai Menggunakan Join In MongoDB NOSQL Databases (FAQ)

Apakah perbezaan antara sambungan SQL dan sambungan MongoDB?

Dalam pangkalan data SQL, operasi sambungan menggabungkan baris dari dua atau lebih jadual berdasarkan lajur yang berkaitan di antara mereka. Walau bagaimanapun, MongoDB, sebagai pangkalan data NoSQL, tidak menyokong sambungan SQL tradisional. Sebaliknya, MongoDB menyediakan dua cara untuk melakukan operasi yang sama: tahap

dan tahap $lookup dalam pengagregatan. Kaedah ini membolehkan anda menggabungkan data dari pelbagai koleksi ke dalam satu set hasil. $graphLookup Bagaimanakah tahap

di MongoDB berfungsi?

Tahap $lookup di MongoDB membolehkan anda menyambungkan dokumen dari koleksi lain (koleksi "disambungkan") dan tambahkan dokumen yang disambungkan ke dokumen input. Fasa

menentukan koleksi "dari", "Localfield" dan "Foreignfield" untuk memadankan dokumen, dan bidang "As" untuk mengeluarkan dokumen. Ia sama dengan gabungan luar kiri di SQL, mengembalikan semua dokumen dari koleksi input dan dokumen yang sepadan dari koleksi "Dari".

$lookup Bolehkah saya melakukan carian rekursif menggunakan sambungan MongoDB? $lookup

Ya, MongoDB menyediakan fasa

untuk carian rekursif. Peringkat

melakukan carian rekursif pada set yang ditentukan dan boleh memilih untuk mengehadkan kedalaman dan keluasan carian. Ia berguna untuk menanyakan data hierarki atau graf di mana bilangan tahap tidak diketahui atau mungkin berubah.

$graphLookup Bagaimana untuk mengoptimumkan prestasi apabila menggunakan sambungan MongoDB? $graphLookup [ ??> peringkat

dan

peringkat untuk menapis dan menukar dokumen.

Bolehkah saya menyambungkan pelbagai koleksi di MongoDB?

Ya, anda boleh menyambungkan pelbagai koleksi MongoDB dengan menghubungkan pelbagai $lookup peringkat dalam saluran paip agregasi. Setiap peringkat $lookup menambah dokumen yang disambungkan dari koleksi lain ke dokumen input.

Bagaimana menangani nilai null atau hilang semasa menggunakan sambungan MongoDB?

Apabila menggunakan sambungan MongoDB, jika dokumen dalam koleksi input tidak sepadan dengan mana -mana dokumen dalam koleksi "Dari", fasa $lookup menambah array kosong ke medan "As". Anda boleh mengendalikan nilai null atau hilang ini dengan menambahkan fasa $lookup selepas fasa $match untuk menyaring dokumen dengan medan kosong "sebagai".

Bolehkah saya menggunakan sambungan mongoDB dengan koleksi sharded?

Bermula dari MongoDB 3.6, peringkat $lookup dan $graphLookup boleh menerima set sharded untuk menjadi "dari" set. Walau bagaimanapun, disebabkan oleh overhead rangkaian tambahan, prestasi mungkin tidak sebaik koleksi tidak dicukur.

bagaimana menyusun dokumen yang disambungkan di MongoDB?

Anda boleh menyusun dokumen yang disambungkan di MongoDB dengan menambahkan fasa $lookup selepas fasa $sort dalam saluran paip pengagregatan. Peringkat $sort menyusun dokumen dalam medan yang ditentukan dalam urutan menaik atau menurun.

Bolehkah saya menggunakan sambungan MongoDB dengan find() kaedah?

Tidak, sambungan MongoDB tidak boleh digunakan dengan kaedah find(). Tahap $lookup dan $graphLookup adalah sebahagian daripada rangka kerja agregasi yang menyediakan keupayaan pemprosesan data yang lebih maju daripada kaedah find().

Bagaimana untuk menyahpepijat atau menyelesaikan kegagalan sambungan MongoDB?

Untuk debug atau selesaikan kegagalan sambungan MongoDB, anda boleh menggunakan kaedah explain() untuk menganalisis pelan pelaksanaan saluran paip agregat. Kaedah explain() menyediakan maklumat terperinci mengenai panggung, termasuk bilangan dokumen yang diproses, masa yang dibelanjakan, dan penggunaan indeks.

Atas ialah kandungan terperinci Menggunakan Join In MongoDB NoSQL Pangkalan Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1488
72
Peranti anda memberi makan kepada pembantu AI dan menuai data peribadi walaupun mereka sedang tidur. Inilah cara mengetahui apa yang anda kongsi. Peranti anda memberi makan kepada pembantu AI dan menuai data peribadi walaupun mereka sedang tidur. Inilah cara mengetahui apa yang anda kongsi. Jul 05, 2025 am 01:12 AM

Suka atau tidak, kecerdasan buatan telah menjadi sebahagian daripada kehidupan seharian. Banyak peranti-termasuk pisau cukur elektrik dan berus gigi-telah menjadi berkuasa AI, "menggunakan algoritma pembelajaran mesin untuk mengesan bagaimana seseorang menggunakan peranti, bagaimana devi

Taufan dan Badai Sandstorms boleh diramalkan 5,000 kali lebih cepat terima kasih kepada model Microsoft AI baru Taufan dan Badai Sandstorms boleh diramalkan 5,000 kali lebih cepat terima kasih kepada model Microsoft AI baru Jul 05, 2025 am 12:44 AM

Model kecerdasan buatan baru (AI) telah menunjukkan keupayaan untuk meramalkan peristiwa cuaca utama dengan lebih cepat dan dengan ketepatan yang lebih besar daripada beberapa sistem ramalan global yang paling banyak digunakan. Model ini, bernama Aurora, telah dilatih U

Model AI Lanjutan menjana sehingga 50 kali lebih banyak CO ₂ pelepasan daripada LLM yang lebih biasa ketika menjawab soalan yang sama Model AI Lanjutan menjana sehingga 50 kali lebih banyak CO ₂ pelepasan daripada LLM yang lebih biasa ketika menjawab soalan yang sama Jul 06, 2025 am 12:37 AM

Semakin tepatnya kita cuba membuat fungsi model AI, semakin besar pelepasan karbon mereka menjadi - dengan petunjuk tertentu menjana sehingga 50 kali lebih banyak karbon dioksida daripada yang lain, menurut kajian baru -baru ini. Model -model yang berlaku seperti Claude Antropik

Ai 'Hallucinates' sentiasa, tetapi ada penyelesaian Ai 'Hallucinates' sentiasa, tetapi ada penyelesaian Jul 07, 2025 am 01:26 AM

Kebimbangan utama dengan teknologi besar yang bereksperimen dengan kecerdasan buatan (AI) bukanlah ia mungkin menguasai kemanusiaan. Isu sebenar terletak pada ketidaktepatan model bahasa besar (LLMS) yang berterusan seperti chatgpt AI, Gemini Google, dan

Mengapa AI Halllucinating lebih kerap, dan bagaimana kita boleh menghentikannya? Mengapa AI Halllucinating lebih kerap, dan bagaimana kita boleh menghentikannya? Jul 08, 2025 am 01:44 AM

Kecerdasan buatan yang lebih maju (AI) menjadi, semakin cenderung "halusinasi" dan memberikan maklumat palsu atau tidak tepat. Menurut penyelidikan oleh Openai, model penalaran yang paling baru dan berkuasa-O3 dan O4-mini-Exhibited H

Model AI canggih dari Openai dan Deepseek menjalani 'keruntuhan lengkap' apabila masalah menjadi terlalu sukar, kajian mendedahkan Model AI canggih dari Openai dan Deepseek menjalani 'keruntuhan lengkap' apabila masalah menjadi terlalu sukar, kajian mendedahkan Jul 07, 2025 am 01:02 AM

Model penalaran kecerdasan buatan (AI) tidak begitu mampu seperti yang muncul. Pada hakikatnya, prestasi mereka rosak sepenuhnya apabila tugas menjadi terlalu rumit, menurut penyelidik di Apple. Model -model yang rumit seperti Claude Anthropic, terbuka

Penangkapan yang dibuat dalam Hunt untuk penggodam di belakang serangan siber di M & S dan Co-OP Penangkapan yang dibuat dalam Hunt untuk penggodam di belakang serangan siber di M & S dan Co-OP Jul 11, 2025 pm 01:36 PM

Agensi Jenayah Kebangsaan UK (NCA) telah menahan empat individu yang disyaki terlibat dalam serangan siber yang menyasarkan Marks dan Spencer (M & S), Co-op, dan Harrods.

Kriptografi pasca kuantum kini menjadi minda untuk pemimpin keselamatan siber Kriptografi pasca kuantum kini menjadi minda untuk pemimpin keselamatan siber Jul 11, 2025 pm 01:38 PM

Kriptografi pasca kuantiti telah menjadi keutamaan bagi pemimpin keselamatan siber, namun penyelidikan baru-baru ini menunjukkan bahawa sesetengah organisasi tidak merawat ancaman dengan keseriusan yang diperlukan. Komputer Quantum akhirnya dapat menyelesaikan t

See all articles