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

$bsonSize (operador de expresión)

$bsonSize

Devuelve el tamaño en bytes de un documento dado (es decir, bsontype) Object cuando se codifica como BSON. Puede usar como alternativa $bsonSize al bsonSize() método.

$bsonSize tiene la siguiente sintaxis:

{ $bsonSize: <object> }

El argumento puede ser cualquier expresión válida, siempre que se resuelva a un objeto o null. Para más información sobre expresiones, consulta Expresiones.

Si el argumento es un objeto, la expresión devuelve el tamaño del objeto en bytes cuando el objeto se codifica como BSON.

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

Si el argumento se resuelve en un tipo de datos distinto de un objeto o, se null $bsonSize producen errores.

mongoshEn, cree una colección de muestra llamada employees con los siguientes documentos:

db.employees.insertMany([
{
"_id": 1,
"name": "Alice", "email": "alice@company.com", "position": "Software Developer",
"current_task": {
"project_id": 1,
"project_name": "Aggregation Improvements",
"project_duration": 5,
"hours": 20
}
},
{
"_id": 2,
"name": "Bob", "email": "bob@company.com", "position": "Sales",
"current_task": {
"project_id": 2,
"project_name": "Write Blog Posts",
"project_duration": 2,
"hours": 10,
"notes": "Progress is slow. Waiting for feedback."
}
},
{
"_id": 3,
"name": "Charlie", "email": "charlie@company.com", "position": "HR (On Leave)",
"current_task": null
},
{
"_id": 4,
"name": "Dianne", "email": "diane@company.com", "position": "Web Designer",
"current_task": {
"project_id": 3,
"project_name": "Update Home Page",
"notes": "Need to scope this project."
}
}
]);

La siguiente agregación projects:

db.employees.aggregate([
{
"$project": {
"name": 1,
"object_size": { $bsonSize: "$$ROOT" }
}
}
])

La operación devuelve el siguiente resultado:

{ "_id" : 1, "name" : "Alice", "object_size" : 222 }
{ "_id" : 2, "name" : "Bob", "object_size" : 248 }
{ "_id" : 3, "name" : "Charlie", "object_size" : 112 }
{ "_id" : 4, "name" : "Dianne", "object_size" : 207 }

El siguiente pipeline retorna el tamaño combinado de todos los documentos en la colección employees:

db.employees.aggregate([
{
"$group": {
"_id": null,
"combined_object_size": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])

Cuando especificas un valor $group _id de null o cualquier otro valor constante, la etapa $group calcula los valores acumulados para todos los documentos de entrada en conjunto.

La operación utiliza el operador para $sum calcular el combinado de cada documento $bsonSize en la colección. La variable hace referencia al documento que está siendo procesado actualmente por la canalización. Para obtener más información sobre las variables en la canalización de agregación, consulte Variables $$ROOTen expresiones de agregación.

La operación devuelve el siguiente resultado:

{ "_id" : null, "combined_object_size" : 789 }

El siguiente pipeline devuelve el documento con el campo current_task más grande en bytes:

db.employees.aggregate([
// First Stage
{ $project: { name: "$name", task_object_size: { $bsonSize: "$current_task" } } },
// Second Stage
{ $sort: { "task_object_size" : -1 } },
// Third Stage
{ $limit: 1 }
])
Primera etapa

La primera etapa del pipeline projects:

  • El campo name.

  • El task_object_size campo, que utiliza para devolver el tamaño del campo del $bsonSize documento current_task en bytes.

Esta etapa produce los siguientes documentos para la siguiente etapa:

{ "_id" : 1, "name" : "Alice", "task_object_size" : 109 }
{ "_id" : 2, "name" : "Bob", "task_object_size" : 152 }
{ "_id" : 3, "name" : "Charlie", "task_object_size" : null }
{ "_id" : 4, "name" : "Dianne", "task_object_size" : 99 }
Segunda etapa

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

Esta etapa produce los siguientes documentos para la siguiente etapa:

{ "_id" : 2, "name" : "Bob", "task_object_size" : 152 }
{ "_id" : 1, "name" : "Alice", "task_object_size" : 109 }
{ "_id" : 4, "name" : "Dianne", "task_object_size" : 99 }
{ "_id" : 3, "name" : "Charlie", "task_object_size" : null }
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" : 2, "name" : "Bob", "task_object_size" : 152 }
Califique esta página