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 }