MongoDB предоставя различни опции за извличане на части от дата от дата.
Тази статия представя 3 начина за връщане на седмичната част от дата в MongoDB.
Примерни данни
Да предположим, че имаме колекция, наречена cats
със следните документи:
{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") } { "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:12Z") } { "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:30:00Z") }
Следващите примери демонстрират различни опции за връщане на седмичната част от born
поле на тези документи.
$week
Оператор
$week
операторът връща седмицата от годината за дата като число между 0 и 53.
Следователно можем да изпълним следния код, за да върнем седмицата от born
поле в горния документ.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Резултат:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Можете също да посочите часовата зона, когато използвате $week
оператор.
Вижте MongoDB $week
за повече информация и примери.
$dateToString
Оператор
$dateToString
оператор преобразува обект за дата в низ според зададен от потребителя формат. Следователно потребителят може да посочи, че само седмичната част се връща, ако е необходимо.
Има спецификатори на формат за всяка част от датата. По отношение на седмичната част от датата, %U
спецификаторът на формат връща седмицата от годината и %V
спецификаторът на формат връща седмицата от годината във формат ISO 8601.
Пример:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthWeek: { $dateToString: { format: "%U", date: "$born" } },
birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
}
}
]
)
Резултат:
{ "birthWeek" : "01", "birthWeekISO" : "53" } { "birthWeek" : "49", "birthWeekISO" : "49" } { "birthWeek" : "38", "birthWeekISO" : "39" }
Вижте MongoDB $dateToString
за повече информация и примери.
Вижте също MongoDB $dateToString
Форматни спецификатори за списък с спецификатори на формат, които могат да се използват с този оператор.
$isoWeek
Оператор
Ако трябва да върнете седмицата във формат ISO 8601, използвайте $isoWeek
. Годината по ISO 8601 започва с понеделник от седмица 1 и завършва с неделята на последната седмица.
Пример:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Резултат:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Този резултат е различен от този, когато използвахме $week
оператор.
Ето пример, който показва разликата.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" },
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Резултат:
{ "birthWeek" : 1, "birthIsoWeek" : 53 } { "birthWeek" : 49, "birthIsoWeek" : 49 } { "birthWeek" : 38, "birthIsoWeek" : 39 }