Mongodb: jak wysyłać zapytania z zakresem dat


Do wykonywania zapytań o zakres dat w MongoDB możesz użyć następującej podstawowej składni:

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

To konkretne zapytanie zwróci wszystkie dokumenty w kolekcji, których pole „dzień” jest większe niż 2020-01-21 i mniejsze niż 2020-01-24.

Zauważ, że $gt oznacza „większe niż”, a $lt oznacza „mniejsze niż”.

Możesz także użyć $gte dla „większego lub równego” i $lte dla „mniejszego lub równego”.

Poniższe przykłady pokazują, jak w praktyce zastosować tę składnię w przypadku sprzedaży kolekcjonerskiej z następującymi dokumentami:

 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 })

Przykład 1: Wyszukaj dokumenty pomiędzy dwiema datami

Możemy użyć poniższego kodu, aby znaleźć wszystkie dokumenty, w których pole „dzień” znajduje się pomiędzy dwiema określonymi datami:

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

To zapytanie zwraca następujące dwa dokumenty:

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

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

Przykład 2: Wyszukaj dokumenty po określonej dacie

Możemy użyć poniższego kodu, aby znaleźć wszystkie dokumenty, których pole „dzień” przypada po określonej dacie:

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

To zapytanie zwraca następujące dwa dokumenty:

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

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

Przykład 3: Wyszukaj dokumenty sprzed określonej daty

Możemy użyć poniższego kodu, aby znaleźć wszystkie dokumenty, których pole „dzień” przypada przed określoną datą:

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

To zapytanie zwraca następujące dwa dokumenty:

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

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

Uwaga : Pełną dokumentację funkcji ISODate() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zapytania w MongoDB:

MongoDB: Jak wysyłać zapytania za pomocą wyrażenia regularnego „Lubię to”
MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *