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

Filter sub array dari array dengan beberapa kriteria

Anda hanya perlu $filter di dalam $map :

db.junk.aggregate([
  { "$project": {
    "someArray": {
      "$filter": {
        "input": {
          "$map": {
            "input": "$someArray",
             "as": "some",
             "in": {
               "subId": "$$some.subId",
               "subArray": {
                 "$filter": {
                   "input": "$$some.subArray",
                   "as": "sub",
                   "cond": { "$ne": [ "$$sub.filterMe", "YES" ] }
                 }
               }
             }
          }
        },
        "as": "some",
        "cond": { "$gt": [ { "$size": "$$some.subArray" }, 0 ] }
      }
    }
  }}
])

Menghasilkan:

{
        "_id" : "someId",
        "someArray" : [
                {
                        "subId" : 1,
                        "subArray" : [
                                {
                                        "field1" : "A",
                                        "filterMe" : "NO"
                                }
                        ]
                },
                {
                        "subId" : 2,
                        "subArray" : [
                                {
                                        "field1" : "D",
                                        "filterMe" : "NO"
                                }
                        ]
                }
        ]
}

Saya sebenarnya membungkusnya dengan $filter additional tambahan untuk menghapus someArray entri di mana subArray yang difilter akhirnya menjadi kosong sebagai hasilnya. Jarak tempuh dapat bervariasi tergantung pada apa yang ingin Anda lakukan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mendapatkan catatan N terakhir di mongodb?

  2. Bagaimana cara mengelola koneksi MongoDB di aplikasi web Node.js?

  3. Dapatkan catatan terbaru dari koleksi mongodb

  4. SQL NULLIF() Dijelaskan

  5. Cara menggunakan Enkripsi untuk Melindungi data MongoDB