Mongodb: bir tarih aralığıyla sorgulama nasıl yapılır


MongoDB’de bir tarih aralığıyla sorgulama yapmak için aşağıdaki temel sözdizimini kullanabilirsiniz:

 db.collection.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

Bu özel sorgu, koleksiyondaki “gün” alanı 2020-01-21’den büyük ve 2020-01-24’ten küçük olan tüm belgeleri döndürecektir.

$gt’nin “büyüktür”ü ve $lt’nin “küçüktür”ü gösterdiğini unutmayın.

Ayrıca “büyüktür veya eşittir” için $gte ve “küçük veya eşittir” için $lte kullanabilirsiniz.

Aşağıdaki örnekler, bu sözdiziminin pratikte aşağıdaki belgelerle bir koleksiyon satışında nasıl kullanılacağını göstermektedir:

 db.sales.insertOne({day: new Date(" 2020-01-20 "), amount: 40 })
db.sales.insertOne({day: new Date(" 2020-01-21 "), amount: 32 })
db.sales.insertOne({day: new Date(" 2020-01-22 "), amount: 19 })
db.sales.insertOne({day: new Date(" 2020-01-23 "), amount: 29 })
db.sales.insertOne({day: new Date(" 2020-01-24 "), amount: 35 })

Örnek 1: İki tarih arasındaki belgeleri arayın

“Gün” alanının iki belirli tarih arasında olduğu tüm belgeleri bulmak için aşağıdaki kodu kullanabiliriz:

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-21 "),
        $lt : ISODate(" 2020-01-24 ")
    }
})

Bu sorgu aşağıdaki iki belgeyi döndürür:

 { _id: ObjectId("618548bc7529c93ea0b41490"),
  day: 2020-01-22T00:00:00.000Z,
  amount: 19 }

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

Örnek 2: Belirli bir tarihten sonraki belgeleri arama

“Gün” alanı belirli bir tarihten sonra olan tüm belgeleri bulmak için aşağıdaki kodu kullanabiliriz:

 db.sales.find({
    day: {
        $gt : ISODate(" 2020-01-22 ")
    }
})

Bu sorgu aşağıdaki iki belgeyi döndürür:

 { _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

{ _id: ObjectId("618548bc7529c93ea0b41492"),
  day: 2020-01-24T00:00:00.000Z,
  amount: 35 }

Örnek 3: Belirli bir tarihten önceki belgeleri arama

“Gün” alanı belirli bir tarihten önce olan tüm belgeleri bulmak için aşağıdaki kodu kullanabiliriz:

 db.sales.find({
    day: {
        $lt : ISODate(" 2020-01-22 ")
    }
})

Bu sorgu aşağıdaki iki belgeyi döndürür:

 { _id: ObjectId("618548bc7529c93ea0b4148e"),
  day: 2020-01-20T00:00:00.000Z,
  amount: 40 }

{ _id: ObjectId("618548bc7529c93ea0b4148f"),
  day: 2020-01-21T00:00:00.000Z,
  amount: 32 }

Not : ISODate() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimlerde MongoDB’de diğer yaygın sorguların nasıl gerçekleştirileceği açıklanmaktadır:

MongoDB: “Beğen” normal ifadesiyle nasıl sorgulama yapılır?
MongoDB: Alanın bir dize içerip içermediği nasıl kontrol edilir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir