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

Bagaimana cara FILTER mengembalikan data antara dua tanggal dari mongodb menggunakan agregasi:kecocokan, pencarian, dan proyek?

Solusi Anda terlihat hampir benar, asalkan dateStart dan dateStart sebenarnya Date objek dan bukan String s.

Coba 2 . Anda tidak lengkap Saya tidak yakin itu menggunakan $lookup dari Coba 1 atau tidak. Jika demikian Anda harus memastikan output dari $lookup sama dengan input $filter . Jadi, Anda harus mengubah as di $lookup untuk mencocokkan input dari $filter

{
  $lookup: {
    from: "notifications",
    localField: "accessToken",
    foreignField: "accessToken",
    as: "items" // here
  }

}

Solusi Alternatif

Saya tidak yakin apa yang Anda inginkan sebagai output. Jika Anda hanya membutuhkan serangkaian notifikasi tanpa objek pengguna, Anda dapat mencoba yang berikut ini.

[{
  $match: { userId: mongoose.Types.ObjectId(userId) }
}, {
  $lookup: {
    from: "notifications",
    localField: "accessToken", // don't forget to index register.accessToken
    foreignField: "accessToken", // don't forget to index notification.accessToken
    as: "notifications"
  }
}, {
  $unwind: "$notifications"
}, {
  $match: { 
    dateCreated: { $gte: dateStart, $lte: dateEnd } // dateStart, dateEnd should be Date objects
  }
}, { // optional, move notifications to top lvel
  $replaceRoot: { root: '$notifications' }
}]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Validasi objek terhadap skema Mongoose tanpa menyimpan sebagai dokumen baru

  2. Bagaimana cara mengonversi format tanggal di mongodb

  3. Bug penamaan koleksi luwak?

  4. Pemberitahuan:Properti tidak terdefinisi:MongoId

  5. Node - Mongoose 3.6 - Urutkan kueri dengan bidang yang terisi