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

Kueri dan jumlahkan semuanya dengan luwak

Anda dapat menggunakan Aggregation Pipeline untuk menambahkan bidang terhitung ke hasil. Ada beberapa contoh di bawah ini menggunakan mongo shell, tetapi sintaks dalam Aggregate() helper Mongoose mirip.

Misalnya, untuk menghitung jumlah (per dokumen pengguna), Anda dapat menggunakan $add ekspresi dalam $project panggung :

db.user.aggregate(
    // Limit to relevant documents and potentially take advantage of an index
    { $match: {
        user_id: "foo"
    }},

    { $project: {
        user_id: 1,
        total: { $add: ["$user_totaldocs", "$user_totalthings"] }
    }}
)

Untuk menghitung total di beberapa dokumen, Anda perlu menggunakan $group panggung dengan $sum akumulator , misalnya:

db.user.aggregate(
    { $group: {
        _id: null,
        total:       { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
        totaldocs:   { $sum: "$user_totaldocs" },
        totalthings: { $sum: "$user_totalthings" }
    }}
)

Anda mungkin hanya menginginkan satu totalthings bidang; Saya telah menambahkan totaldocs dan totalthings sebagai contoh penghitungan beberapa bidang.

Grup _id dari null akan menggabungkan nilai dari semua dokumen yang diteruskan ke $group tahap, tetapi Anda juga dapat menggunakan kriteria lain di sini (seperti pengelompokan berdasarkan user_id ).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Penggunaan data buffer tahap sortir overflow melebihi batas internal

  2. Mongoose TypeError:Tidak dapat menggunakan operator 'in' untuk mencari '_id' di [objek Obyek]

  3. 5 Cara Memilih Baris dengan Nilai Minimum untuk Grup mereka di SQL

  4. Bagaimana menemukan semua koleksi dari luwak

  5. apakah ada ORM mongodb yang memungkinkan Anda untuk alias bidang?