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

MongoDB Mongoose menanyakan array subdokumen yang sangat bersarang berdasarkan rentang tanggal

Masalahnya di sini adalah WorkDoneBy adalah larik yang bersarang di larik lain (ItemReport ). Oleh karena itu tunggal $filter tidak cukup karena Anda perlu mengulangi dua kali. Anda dapat menambahkan $map untuk mengulangi array luar:

db.records.aggregate([
    {
        "$project": {
            "ItemReport": {
                $map: {
                    input: "$ItemReport",
                    as: "ir",
                    in: {
                        WorkDoneBy: {
                            $filter: {
                                input: "$$ir.WorkDoneBy",
                                as: "value",
                                cond: {
                                    "$and": [
                                        { "$ne": [ "$$value.DateCompleted", null ] },
                                        { "$gt": [ "$$value.DateCompleted", new Date("2017-01-01T12:00:00.000Z") ] },
                                        { "$lt": [ "$$value.DateCompleted", new Date("2018-12-31T12:00:00.000Z") ] }
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        }
    }
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB daftar database yang tersedia di java

  2. MongoDB Pengambilan dokumen lambat (Pengindeksan digunakan)

  3. Dokumen unik dalam koleksi MongoDB

  4. Pymongo menemukan nilai dalam subdokumen

  5. MongoDB:$atau pencarian teks lengkap dan $in