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

Sertakan bidang dalam agregat mongodb

Itu tidak termasuk bidang karena Anda tidak meminta bidang untuk dikembalikan. Hal yang Anda lewatkan di sini adalah menggunakan $first atau "accumulator" yang serupa untuk mengembalikan elemen selama $group .

Juga jika Anda tidak ingin alamat email kosong, kecualikan dalam $match tahap pipeline, karena itu adalah hal yang paling efisien untuk dilakukan.

db.collection.aggregate([
    { $match: { branch: "CO", "customerEmail": { "$ne": "" } } },
    { $group:
        {
            _id: { customer:"$customerID"},
            email: { "$first": "$customerEmail" }
        }
    }
]);

Sebuah "pipa" hanya mengembalikan "output" dari tahapan seperti $group atau $project bahwa Anda benar-benar memintanya. Sama seperti "pipa Unix" | operator, satu-satunya hal yang tersedia untuk "tahap selanjutnya" adalah apa yang Anda hasilkan.

Ini harus jelas hanya dari:

db.collection.aggregate([
    { $match: { branch: "CO" } },   
    { $group:
        {
            _id: { customer:"$customerID"}
        }
    }
]);

Atau bahkan:

db.collection.aggregate([
    { $match: { branch: "CO" } },   
    { $project:
        {
            _id: { customer:"$customerID"}
        }
    }
]);

Yang mengembalikan tentu saja hanya _id nilai karena hanya itu yang Anda minta.

Anda hanya memiliki akses di setiap tahap pipa ke data yang "dikeluarkan oleh tahap sebelumnya". Dalam $group itu berarti hanya _id untuk kunci pengelompokan, dan apa pun yang ditentukan "secara eksplisit" menggunakan "accumulator" yang valid untuk properti lain yang ingin Anda kembalikan. Akumulator apa pun ( yang valid untuk "string" di sini) dapat digunakan, tetapi apa pun di luar _id harus gunakan "akumulator" .

Saya sarankan meluangkan waktu untuk melihat semua operator agregasi dan apa yang sebenarnya mereka lakukan. Ada contoh penggunaan dengan masing-masing operator




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Bagaimana cara menghitung bidang jika nilainya cocok dengan suatu kondisi?

  2. Hasil unik Rails &Mongoid

  3. Meteor, tentukan koleksi secara dinamis

  4. Pertimbangan untuk Mengelola MongoDB

  5. Cara membuat Pengguna &menambahkan Peran di MongoDB