Definición
$weekDevuelve la semana del año de una fecha como un número entre 0 y 53.
Las semanas comienzan en domingo, y la semana 1 comienza con el primer domingo del año. Los días anteriores al primer domingo del año corresponden a la semana 0. Este comportamiento es el mismo que el del operador "
%U" para la funciónstrftimede la biblioteca estándar.El
$weekLa expresión tiene lo siguiente Sintaxis de expresión del operador:{ $week: <dateExpression> } El argumento puede ser:
Una expresión que se resuelve en una fecha, una marca de tiempo o un ObjectID.
Un documento con este formato:
{ date: <dateExpression>, timezone: <tzExpression> } CampoDescripcióndatetimezoneOpcional. La zona horaria del resultado de la operación.
<tzExpression>debe ser una expresión válida que se resuelva en una cadena con el formato de identificador de zona horaria de Olson.o una diferencia horaria UTC. Si notimezonese proporciona, el resultado se expresa en UTC.FormatoEjemplosOlson Timezone Identifier"America/New_York" "Europe/London" "GMT" UTC Offset+/-[hh]:[mm], e.g. "+04:45" +/-[hh][mm], e.g. "-0530" +/-[hh], e.g. "+03"
Comportamiento
Ejemplo | Resultado | ||||
|---|---|---|---|---|---|
| 0 | ||||
| 1 | ||||
| 33 | ||||
| 44 | ||||
| 43 | ||||
|
| ||||
|
| ||||
|
|
Nota
$week no puede tomar una cadena como argumento.
Ejemplo
Considere una colección sales con el siguiente documento:
db.sales.insertOne( { "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-01-01T08:15:39.736Z") } )
La siguiente agregación utiliza y otros operadores de fecha para desglosar $week el date campo:
db.sales.aggregate( [ { $project: { year: { $year: "$date" }, month: { $month: "$date" }, day: { $dayOfMonth: "$date" }, hour: { $hour: "$date" }, minutes: { $minute: "$date" }, seconds: { $second: "$date" }, milliseconds: { $millisecond: "$date" }, dayOfYear: { $dayOfYear: "$date" }, dayOfWeek: { $dayOfWeek: "$date" }, week: { $week: "$date" } } } ] )
La operación devuelve el siguiente resultado:
{ "_id" : 1, "year" : 2014, "month" : 1, "day" : 1, "hour" : 8, "minutes" : 15, "seconds" : 39, "milliseconds" : 736, "dayOfYear" : 1, "dayOfWeek" : 4, "week" : 0 }