Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$binarySize (operador de expresión)

$binarySize

Devuelve el tamaño del contenido de una string o un valor de datos binario dado en bytes.

$binarySize tiene la siguiente sintaxis:

{ $binarySize: <string or binData> }

El argumento puede ser cualquier expresión válida, siempre que se resuelva en un valor de string o un valor de datos binarios. Para obtener más información sobre las expresiones, consulta Expresiones.

El argumento para $binarySize debe resolverse en:

  • Una string,

  • Un valor de datos binarios, o

  • nulo.

Si el argumento es un string o un valor de datos binarios, la expresión devuelve el tamaño del argumento en bytes.

Si el argumento es null, la expresión devuelve null.

Si el argumento se resuelve en cualquier otro tipo de datos, $binarySize genera un error.

Si el argumento para $binarySize es una cadena, el operador cuenta el número de bytes codificados en UTF-8 en una cadena donde cada carácter puede usar entre uno y cuatro bytes.

Por ejemplo, los caracteres US-ASCII se codifican usando un byte. Los caracteres con marcas diacríticas y caracteres alfabéticos latinos adicionales (caracteres latinos fuera del alfabeto inglés) se codifican utilizando dos bytes. Los caracteres chinos, japoneses y coreanos generalmente requieren tres bytes, mientras que otros planos de Unicode (emojis, símbolos matemáticos, etc.) requieren cuatro bytes.

Considere los siguientes ejemplos:

Ejemplo
Resultados
notas
{ $binarySize: "abcde" }

5

Cada carácter se codifica utilizando un byte.

{ $binarySize: "Hello World!" }

12

Cada carácter se codifica utilizando un byte.

{ $binarySize: "cafeteria" }

9

Cada carácter se codifica utilizando un byte.

{ $binarySize: "cafétéria" }

11

é se codifica utilizando dos bytes.

{ $binarySize: "" }

0

Las cadenas vacías retornan 0.

{ $binarySize: "$€λG" }

7

€ se codifica utilizando tres bytes. λ se codifica utilizando dos bytes.

{ $binarySize: "寿司" }

6

Cada carácter se codifica utilizando tres bytes.

En mongosh, cree una colección de ejemplo llamada images con los siguientes documentos:

db.images.insertMany([
{ _id: 1, name: "cat.jpg", binary: new BinData(0, "OEJTfmD8twzaj/LPKLIVkA==")},
{ _id: 2, name: "big_ben.jpg", binary: new BinData(0, "aGVsZmRqYWZqYmxhaGJsYXJnYWZkYXJlcTU1NDE1Z2FmZCBmZGFmZGE=")},
{ _id: 3, name: "tea_set.jpg", binary: new BinData(0, "MyIRAFVEd2aImaq7zN3u/w==")},
{ _id: 4, name: "concert.jpg", binary: new BinData(0, "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=")},
{ _id: 5, name: "empty.jpg", binary: new BinData(0, "") }
])

La siguiente agregación projects:

  • El campo name.

  • El campo imageSize, que utiliza $binarySize para devolver el tamaño del campo binary del documento en bytes.

db.images.aggregate([
{
$project: {
"name": "$name",
"imageSize": { $binarySize: "$binary" }
}
}
])

La operación devuelve el siguiente resultado:

{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 }
{ "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 }
{ "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 }
{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }
{ "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 }

El siguiente pipeline devuelve la imagen con el tamaño de datos binarios más grande:

db.images.aggregate([
// First Stage
{ $project: { name: "$name", imageSize: { $binarySize: "$binary" } } },
// Second Stage
{ $sort: { "imageSize" : -1 } },
// Third Stage
{ $limit: 1 }
])
Primera etapa

La primera etapa del pipeline projects:

  • El campo name.

  • El campo imageSize, que utiliza $binarySize para devolver el tamaño del campo binary del documento en bytes.

Esta etapa produce los siguientes documentos para la siguiente etapa:

{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 }
{ "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 }
{ "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 }
{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }
{ "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 }
Segunda etapa

La segunda etapa sorts los documentos por imageSize en orden descendente.

Esta etapa produce los siguientes documentos para la siguiente etapa:

{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }
{ "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 }
{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 }
{ "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 }
{ "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 }
Tercera etapa

La tercera etapa limits los documentos de salida para solo devolver el documento que aparece primero en el orden de clasificación:

{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }
Califique esta página