Senaryo: Aşağıdaki verilerle, MyCollection
adlı bir koleksiyon yaşıyorum düşünün:ISO tarihinin dize alanında saklandığı MongoDB koleksiyonunda tarih aralığı nasıl sorgulanır?
{
"_id" : 'MyUniqueID_01'
"CreatedTime" : "2013-12-01T14:35:00Z",
"LastModifiedTime" : "2013-12-01T13:25:00Z"
}
Şimdi verilerin yukarıda belirtilen tür belgelerin çok sayıda olduğu MongoDB veritabanını sorgulamak istiyorum. Ve benim sorgu $gt
, $gte
kullanarak yani tarih aralığına dayanır $lt
& $lte
Yani benim sorgu gibi bir şey olabilir: beklenen sonucudur yukarıdaki örnekler göz önüne alındığında
db.MyCollection.find({ 'CreatedTime': {$gt: '2013-05-25T09:29:40.572Z'}})
, sorgu bir almak zorunda document ("CreatedTime": "2013-12-01T14: 35: 00Z" ifadesi "2013-05-25T09: 29: 40.572Z" sorgusundan geçen değerden daha büyüktür); oysa, sorun alan CreatedTime
dizgisi biçimindedir.
Soru: Bugüne kadar dize alanı türünü değiştirmeden mükemmel benim beklenen sonuç elde böylece herhangi bir yolu var mı?
Bu gibi ISO 8601 tarihli zaman dizeleri, tarih aralığı sorguları için düzgün çalışmalıdır. Bu formatın avantajlarından biri. Örnek sorgunuz, beklendiği gibi örnek dokümanı döndürür. – JohnnyHK
@JohnnyHK: Teşekkürler ... Tam olarak benim yerel DB üzerinde çalışır ama aynı sunucu başarısız sunucuda beklenen yapmaz .. Herhangi bir sürüm bağımlılıkları var mı? –
@AmolMKulkarni Merak etme, sunucuda neden işe yaramadığını buldunuz mu? Zaman aralıkları arasında sorgulama üzerinde çalışıyorum ve arama yaparken buna rastladım. – Raghuveer