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

Agregasi Mongodb:$reduce tidak berfungsi seperti yang diharapkan

  • $max untuk mendapatkan nilai maksimal dari key larik bidang a , ini akan mengembalikan -15 sesuai dengan dokumen Anda
  • $filter untuk mendapatkan objek yang sama dengan -15 nilai
  • $first dapatkan objek pertama dari hasil yang dikembalikan dari $filter
db.collection.aggregate([
  {
    $addFields: {
      winner: {
        $first: {
          $filter: {
            input: "$key",
            cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
          }
        }
      }
    }
  }
])

Taman bermain

Opsi kedua menggunakan $reduce operator,

  • setel kolom awal maxValue di kurangi, nilai maksimum dari key larik bidang a
  • periksa kondisi jika maxValue dan a nilai cocok lalu kembalikan objek maksimal
db.collection.aggregate([
  {
    $addFields: {
      winner: {
        $reduce: {
          input: "$key",
          initialValue: { maxValue: { $max: "$key.a" } },
          in: {
            $cond: [
              { $eq: ["$$this.a", "$$value.maxValue"] },
              "$$this",
              "$$value"
            ]
          }
        }
      }
    }
  }
])

Taman bermain




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Driver MongoDB C#, kueri oleh elemen array menggunakan regex

  2. pembaruan luwak:$inc tidak berfungsi di upsert

  3. mongodb:cara men-debug peta/mengurangi pada shell mongodb

  4. 9 Fitur ClusterControl yang Tidak Akan Anda Temukan di Alat Manajemen Basis Data Lainnya

  5. Menginstal dan Menjalankan MongoDB di OSX