Docs Menu
Docs Home
/ /
Operadores de tuberías de agregación

$semana (agregación)

$week

Devuelve 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ón strftime de la biblioteca estándar.

La expresión tiene lo $week 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> }
    Campo
    Descripción

    date

    La fecha a la que se aplica el operador. <dateExpression> debe ser una expresión válida que se resuelva en una fecha, una marca de tiempo o un ObjectID.

    timezone

    Optional. La zona horaria del resultado de la operación. <tzExpression> debe ser una expresión válida que se resuelva en una cadena formateada como un identificador de zona horaria de Olsono una diferencia UTC. Si no timezone se proporciona, el resultado se muestra UTC en.

    Formato
    Ejemplos

    Olson 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"
Ejemplo
Resultado
{ $week: new Date("Jan 1, 2016") }

0

{ $week: { date: new Date("2016-01-04") } }

1

{ $week: {
date: new Date("August 14, 2011"),
timezone: "America/Chicago"
} }

33

{ $week: ISODate("1998-11-01T00:00:00Z") }

44

{ $week: {
date: ISODate("1998-11-01T00:00:00Z"),
timezone: "-0500"
} }

43

{ $week: "March 28, 1976" }

error

{ $week: Date("2016-01-01") }

error

{ $week: "2009-04-09" }

error

Nota

$week no puede tomar una cadena como argumento.

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
}

Volver

$unsetField

En esta página