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

MongoDB menghapus elemen tergantung pada semua elemen lain (Iterasi)

Jadi berdasarkan contoh Anda, Anda ingin menampilkan ranktime kecuali ini adalah SOURCE2 dan tanggal yang sama telah ditambahkan ke output (tetapi hanya untuk SOURCE2 ).

Anda dapat menggunakan $reduce seperti sebelumnya tetapi Anda perlu memindai elemen yang ditambahkan sebelumnya yang dapat dicapai menggunakan $ anyElementTrue operator dan karena output Anda berisi elemen ketiga, saya berasumsi tanggal yang berulang adalah kondisi berhenti hanya jika tanggal yang sama telah ditambahkan untuk SORUCE2 jadi $filter juga diperlukan untuk menyiapkan set SOURCE2 yang ditambahkan sebelumnya s:

db.col.updateMany({}, [
    {
        $set: {
            ranktime: {
                $reduce: {
                    input: "$ranktime",
                    initialValue: [],
                    in: {
                        $cond: [ 
                            { 
                                $and: [ 
                                    { "$eq": [ "$$this.source", "SOURCE2" ] },
                                    {
                                        $anyElementTrue: {
                                            $map: {
                                                input: { $filter: { input: "$$value", as: "prev", cond: { $eq: { "$$prev.source", "SOURCE2" } } } }, // already added SOURCE2 elements
                                                as: "addedElement",
                                                in: { "$eq": [ { $substr: [ "$$addedElement.datum", 0, 15 ] }, { $substr: [ "$$this.datum", 0, 15 ] } ] }
                                            }                        
                                        }
                                    }
                                ]
                            },
                            "$$value", // skip current element ($$this) 
                            { $concatArrays: [ "$$value", [ "$$this" ] ] } // add current element to the output
                        ]
                    }
                }
            }
        }
    }
])

Taman Bermain Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara memperbarui bidang dalam subdokumen array yang terkandung dalam subdokumen array di MongoDB menggunakan driver C #?

  2. luwak 'findById' mengembalikan nol dengan id yang valid

  3. Mengindeks array objek di MongoDB

  4. pymongo.errors.CursorNotFound:id kursor '...' tidak valid di server

  5. Kesalahan saat menyambung ke Azure:Karakter ilegal dalam kata sandi dengan luwak 5.0.1 tetapi berfungsi di 4.13.9