Latest web development tutorials

polimerisasi MongoDB

MongoDB terpolimerisasi (agregat) terutama untuk pengolahan data (seperti rata-rata statistik, jumlah, dll), dan mengembalikan hasil data dihitung. count pernyataan sql agak mirip (*).


() Metode agregat

Metode polimerisasi MongoDB menggunakan agregat ().

tatabahasa

Dasar sintaks agregat () metode adalah sebagai berikut:

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

contoh

pengumpulan data adalah sebagai berikut:

{
   _id: ObjectId(7df78ad8902c)
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by_user: 'w3cschool.cc',
   url: 'http://www.w3cschool.cc',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   _id: ObjectId(7df78ad8902d)
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   by_user: 'w3cschool.cc',
   url: 'http://www.w3cschool.cc',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 10
},
{
   _id: ObjectId(7df78ad8902e)
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Neo4j',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
},

Sekarang kita atur di atas dihitung untuk setiap jumlah artikel yang ditulis oleh penulis menggunakan agregat () dihitung sebagai berikut:

> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{
   "result" : [
      {
         "_id" : "w3cschool.cc",
         "num_tutorial" : 2
      },
      {
         "_id" : "Neo4j",
         "num_tutorial" : 1
      }
   ],
   "ok" : 1
}
>

Contoh yang sama atas pernyataan sql: pilih by_user, count (*) dari grup mycol oleh by_user

Dalam contoh di atas, kita by_user lapangan dengan lapangan untuk kelompok data dan menghitung jumlah dari nilai yang sama by_user lapangan.

Tabel berikut menunjukkan beberapa ekspresi agregasi:

ekspresi deskripsi contoh
$ Sum Menghitung jumlahnya. db.mycol.aggregate ([{$ grup: {_id: "$ by_user", num_tutorial: {$ sum: "$ suka"}}}])
$ rata Menghitung rata-rata db.mycol.aggregate ([{$ grup: {_id: "$ by_user", num_tutorial: {$ avg: "$ suka"}}}])
$ Min Mendapat koleksi semua dokumen sesuai minimum senilai. db.mycol.aggregate ([{$ grup: {_id: "$ by_user", num_tutorial: {$ min: "$ suka"}}}])
$ Max Mendapat koleksi semua dokumen yang sesuai dengan nilai maksimum. db.mycol.aggregate ([{$ grup: {_id: "$ by_user", num_tutorial: {$ max: "$ suka"}}}])
$ Dorong Dalam dokumen yang dihasilkan untuk memasukkan nilai ke dalam array. db.mycol.aggregate ([{$ grup: {_id: "$ by_user", url: {$ push: "$ url"}}}])
$ AddToSet Dalam dokumen yang dihasilkan untuk memasukkan nilai ke array, tetapi tidak membuat copy. db.mycol.aggregate ([{$ grup: {_id: "$ by_user", url: {$ addToSet: "$ url"}}}])
$ Pertama Menjadi data dokumen pertama sesuai dengan dokumen sumber daya semacam. db.mycol.aggregate ([{$ grup: {_id: "$ by_user", first_url: {$ pertama: "$ url"}}}])
$ terakhir Mendapatkan data dokumen terakhir sesuai dengan dokumen sumber daya semacam db.mycol.aggregate ([{$ grup: {_id: "$ by_user", last_url: {$ terakhir: "$ url"}}}])

Konsep pipeline

Pipa di Unix dan Linux pada umumnya digunakan untuk keluaran perintah saat ini sebagai parameter untuk perintah selanjutnya.

MongoDB MongoDB dokumen polimer pipa di pipa setelah hasil diproses untuk pengolahan pipa berikutnya. operasi pipa dapat diulang.

Ekspresi: pengolahan input dan output dokumen. Ekspresi stateless, hanya dapat digunakan untuk menghitung pipa saat dokumen agregat, Anda tidak bisa berurusan dengan dokumen lainnya.

Di sini kami memperkenalkan kerangka agregasi umum digunakan dalam beberapa operasi:

  • $ Project: Memodifikasi struktur dokumen masukan. Dapat digunakan untuk mengubah nama, menambah atau menghapus bidang, juga dapat digunakan untuk membuat perhitungan bersarang dan dokumentasi.
  • $ Pertandingan: digunakan untuk menyaring data, hanya output dari dokumen yang berkualitas. $ Pertandingan menggunakan MongoDB permintaan standar operator.
  • $ Limit: untuk membatasi jumlah dokumen pipa polimerisasi MongoDB kembali.
  • $ Lewati: Loncat jumlah tertentu dokumen dalam pipa polimerisasi, dan mengembalikan sisa dokumen.
  • $ Unwind: dokumen dibagi dalam berbagai bidang jenis menjadi beberapa, setiap array yang berisi nilai.
  • $ Kelompok: koleksi dokumen pengelompokan dapat digunakan untuk hasil statistik.
  • $ Urutan output dokumen masukan setelah pemesanan.
  • $ GeoNear: Memerintahkan output dokumen dekat dengan lokasi geografis.

Contoh operator pipa

1, contoh proyek $

db.article.aggregate(
    { $project : {
        title : 1 ,
        author : 1 ,
    }}
 );

Dalam hal ini hasil hanya akan ada _id, tilte dan penulis tiga bidang, bidang standar _id adalah untuk dimasukkan, jika order tidak berisi _id jika dapat:

db.article.aggregate(
    { $project : {
        _id : 0 ,
        title : 1 ,
        author : 1
    }});

2. contoh pertandingan $

db.articles.aggregate( [
                        { $match : { score : { $gt : 70, $lte : 90 } } },
                        { $group: { _id: null, count: { $sum: 1 } } }
                       ] );

$ Pertandingan digunakan untuk memperoleh skor lebih besar dari 70 adalah kurang dari atau sama dengan 90 catatan, maka catatan yang cocok untuk tahap berikutnya dari operator pipa $ kelompok untuk diproses.

3. $ melewatkan instance

db.article.aggregate(
    { $skip : 5 });

Setelah operator pipa pengolahan $ melompat, lima dokumen pertama "disaring" keluar.