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

Bagaimana menemukan semua rentang tanggal tumpang tindih dengan rentang tanggal lain di MongoDB?

Saya yakin Anda mencoba menemukan dokumen dengan rentang tanggal yang tumpang tindih. Dengan kata lain setiap dokumen yang start atau end tanggal berada di antara rentang tanggal tertentu.

Anda pasti dapat mencapai ini dengan sedikit kecocokan dan logika.

Mari kita asumsikan saya memiliki dua dokumen dalam koleksi saya

{ 
    "_id" : ObjectId("56f692730c96eddb0a2c287e"), 
    "start" : "2015-03-27T15:00:00.000Z", 
    "end" : "2015-03-27T17:00:00.000Z"
}
{ 
    "_id" : ObjectId("56f6928c0c96eddb0a2c287f"), 
    "start" : "2015-03-27T16:00:00.000Z", 
    "end" : "2015-03-27T27:00:00.000Z"
}

Ketika saya mengeksekusi potongan kode berikut

var startDate = "2015-03-27T20:00:00.000Z";
var endDate = "2015-03-27T21:00:00.000Z";

var findOverlapingDates = function(startDate, endDate){
  return db.collection.find({
     $or: [
        {$and: [
          {start:{$gte: startDate}}, {start:{$lte: endDate}}
        ]},
        {start:{$lte: startDate}, end:{$gte: startDate}}
     ]
  });
};

printjson(findOverlapingDates(startDate, endDate).toArray());

Saya mengerti

[
    {
        "_id" : ObjectId("56f6928c0c96eddb0a2c287f"), 
        "start" : "2015-03-27T16:00:00.000Z", 
        "end" : "2015-03-27T27:00:00.000Z"
    }
]

Yang merupakan dokumen yang tumpang tindih untuk rentang tanggal tertentu. Semoga semuanya masuk akal. Untuk kinerja terbaik, saya akan merekomendasikan memiliki indeks di kedua start dan end bidang.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apa konvensi penamaan untuk MongoDB?

  2. MongoDB sebagai penyedia file statis?

  3. Apakah mungkin untuk menanyakan berbagai hash dari kunci yang diindeks hash di mongodb?

  4. Kesalahan otentikasi saat menghubungkan ke Mongo Atlas dari Mule

  5. Bagaimana menangani tanda hubung dalam definisi Skema GraphQL