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

Kueri Agregat di Mongodb mengembalikan bidang tertentu

Hal pertama yang Anda lakukan salah di sini adalah tidak memahami bagaimana $project dimaksudkan untuk bekerja. Tahapan pipeline seperti $project dan $group hanya akan menampilkan bidang yang diidentifikasi "secara eksplisit". Jadi, hanya bidang yang Anda katakan ke output yang akan tersedia untuk tahapan pipeline berikut.

Khususnya di sini Anda "memproyeksikan" hanya sebagian dari bidang "u" di dokumen Anda dan karena itu Anda menghapus data lain agar tidak tersedia. Satu-satunya bidang yang ada di sini sekarang adalah "nama", yang merupakan bidang yang Anda "proyeksikan".

Mungkin itu benar-benar niat Anda untuk melakukan sesuatu seperti ini:

db.collectiontmp.aggregate([
    { "$group": {
        "_id": {
           "_id": "$u._id",
           "email": { "$toUpper": "$u.e" }
        },
        "total": { "$sum": 1 },
    }},
    { "$project": {
        "_id": 0,
        "email": "$_id.email",
        "total": 1
    }},
    { "$sort": { "total": -1 } },
    { "$limit": 10 }
])

Atau bahkan:

db.collectiontmp.aggregate([
    { "$group": {
        "_id": "$u._id",
        "email": { "$first": { "$toUpper": "$u.e" } }
        "total": { "$sum": 1 },
    }},
    { "$project": {
        "_id": 0,
        "email": 1,
        "total": 1
    }},
    { "$sort": { "total": -1 } },
    { "$limit": 10 }
])

Itu memberi Anda jenis keluaran yang Anda cari.

Ingatlah bahwa karena ini adalah "pipa", maka hanya "keluaran" dari tahap sebelumnya yang tersedia untuk tahap "berikutnya". Tidak ada konsep "global" dari dokumen karena ini bukan pernyataan deklaratif seperti di SQL, tetapi "pipa".

Jadi pikirkan pipa Unix "|" perintah, atau mencari itu. Maka pemikiran Anda akan jatuh pada tempatnya.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB 2.2.1 - basis data tidak valid

  2. MongoDB - Indeks tidak digunakan saat menyortir dan membatasi kueri jarak jauh

  3. Unggah file ke DEFAULT_FILE_STORAGE alih-alih GridF dengan mongoengine

  4. kelompokkan berdasarkan tanggal dalam permintaan mogodb tanpa mempertimbangkan waktu

  5. Operator perbandingan MongoDB dengan null