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

ekstrak nilai subarray di mongodb

Anda memiliki beberapa sintaks dalam contoh asli Anda yang mungkin tidak melakukan apa yang Anda harapkan .. yaitu, sepertinya niat Anda adalah hanya mencocokkan skor untuk jenis tertentu ('ujian' dalam contoh Anda, 'kuis' dengan deskripsi Anda ).

Di bawah ini adalah beberapa contoh menggunakan shell MongoDB 2.2.

$elemMatch proyeksi

Anda dapat menggunakan proyeksi $elemMatch untuk mengembalikan elemen pertama yang cocok dalam larik:

db.students.find(
    // Search criteria
    { '_id': 22 },

    // Projection
    { _id: 0, scores: { $elemMatch: { type: 'exam' } }}
)

Hasilnya akan menjadi elemen larik yang cocok untuk setiap dokumen, misalnya:

{ "scores" : [ { "type" : "exam", "score" : 75.04996547553947 } ] }

Kerangka Agregasi

Jika Anda ingin menampilkan lebih dari satu nilai yang cocok atau membentuk kembali dokumen hasil alih-alih mengembalikan elemen larik yang cocok sepenuhnya, Anda dapat menggunakan Kerangka Agregasi :

db.students.aggregate(
    // Initial document match (uses index, if a suitable one is available)
    { $match: {
        '_id': 22, 'scores.type' : 'exam'
    }},

    // Convert embedded array into stream of documents
    { $unwind: '$scores' },

    // Only match scores of interest from the subarray
    { $match: {
        'scores.type' : 'exam'
    }},

    // Note: Could add a `$group` by _id here if multiple matches are expected

    // Final projection: exclude fields with 0, include fields with 1
    { $project: {
        _id: 0,
        score: "$scores.score"
    }}
)

Hasil dalam hal ini termasuk adalah:

{ "result" : [ { "score" : 75.04996547553947 } ], "ok" : 1 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Parse server - File tidak ditemukan

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

  3. MongoDB $indexOfBytes

  4. Bagaimana menjalankan perintah mongodb mentah dari pymongo

  5. Pembaruan MongoDB Banyak ()