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

MongoDB- Mengambil elemen array yang tepat, tidak termasuk yang lain

Ini adalah kesalahpahaman array-of-array standar dan dapat dimengerti dengan MongoDB. Kriteria kueri akan menghasilkan hasil yang sesuai dengan cakupan dokumen , tidak harus hanya item dalam array yang Anda cari. Dengan kata lain, dengan tujuan yang Anda inginkan untuk menemukan DATA NOT FOUND , kueri paling sederhana akan menemukan dokumen apa pun yang memiliki setidaknya satu item dalam larik yang cocok -- tetapi tidak akan memfilter item yang tidak cocok. Anda harus sedikit lebih rumit untuk melakukan ini dalam satu kesempatan:

db.foo.aggregate([
// Make sure at *least* one label has a remark of DATA NOT FOUND;
// otherwise, the $filter trick in the next stage yields a labels array
// of length 0 (which is not horrible).  Also, this is a good place to
// add other $match criteria, possibly index-optimized, to shrink down the
// size of response set:
{$match: {"divisionIn.sections.labels.remarks":"DATA NOT FOUND"}}

,{$project: {
        // Copy over the main doc level things we want:
        projectDR: "$projectDR",
        code: "$code",
        status: "$status"

        // divisionIn is a map, not an array, so we can dive down using dot notation
        // and make a new sections array called divSections that will ONLY have
        // DATA NOT FOUND: 
        divSections: {$map: {input: "$divisionIn.sections", as:"z", in:
            {
                // Again, copy over things we want to keep; may not need all of them
                "sectionNumber": "$$z.sectionNumber",
                "sectionName": "$$z.sectionName",

                // The Juice: Copy BUT FILTER the labels field conditionally based on
                // the value of labels.remarks:
                "labels": {$filter: {input: "$$z.labels",
                             as: "z2",
                             cond: {$eq: [ "$$z2.remarks", "DATA NOT FOUND"] }
                    }}
            }
            }}
    }}

                       ]);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mengonversi Dokumen MongoDB secara langsung ke Jackson JsonNode di Java

  2. Kunci Asing Validasi Mongoose (ref)

  3. MongoDB :Perbarui semantik Pengubah dari $ tidak disetel

  4. Masalah dalam mengembalikan data yang diambil dari kueri DB yang disebut dalam loop

  5. Bagaimana cara melakukan perintah MongoDB non-CRUD dan non-dasar di ObjCMongoDB?