Si vous devez renvoyer la taille d'un document dans MongoDB, vous pouvez utiliser ce qui suit :
- Le
$bsonSize
opérateur de pipeline d'agrégation - Le
Object.bsonSize()
méthode
Vous trouverez ci-dessous des exemples de chaque approche.
Exemple de données
Pour les exemples suivants, nous utiliserons une collection appelée products
avec les documents suivants :
{ "_id" : 1, "product" : { "name" : "Shirt - Short Sleeves", "color" : "White" } } { "_id" : 2, "product" : { "name" : "Cap", "color" : "Green" } } { "_id" : 3, "product" : { "name" : "Travel Pack", "color" : "Light Blue" } }
Notez que chaque champ de produit contient un document intégré.
Nous pouvons renvoyer la taille de l'ensemble du document ou uniquement de l'objet intégré.
Le $bsonSize
Opérateur de pipeline d'agrégation
Nous pouvons utiliser le $bsonSize
opérateur avec le $$ROOT
variable système pour obtenir la taille de l'ensemble du document. Le $$ROOT
La variable fait référence au document en cours de traitement par le pipeline.
Exemple :
db.products.aggregate([
{
$project: {
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Résultat :
{ "_id" : 1, "rootSize" : 81 } { "_id" : 2, "rootSize" : 63 } { "_id" : 3, "rootSize" : 76 }
Dans ce cas, nous obtenons la taille de tous les documents de la collection, mais vous pouvez toujours la filtrer sur un seul document ou sur plusieurs.
Pour obtenir la taille des documents intégrés, nous pouvons remplacer le $$ROOT
variable avec le nom du champ des documents.
Exemple :
db.products.aggregate([
{
$project: {
"documentSize": { $sum: { $bsonSize: "$product" } }
}
}
])
Résultat :
{ "_id" : 1, "documentSize" : 54 } { "_id" : 2, "documentSize" : 36 } { "_id" : 3, "documentSize" : 49 }
Dans ce cas, le nom du champ est product
et donc nous utilisons $product
pour faire référence à ce champ.
Voir MongoDB $bsonSize
pour plus d'informations et d'exemples.
Le Object.bsonSize()
Méthode
Le Object.bsonSize()
est un autre moyen d'obtenir la taille d'un document.
Exemple :
Object.bsonsize(
db.products.findOne()
)
Résultat :
81
Cette méthode retourne juste la taille et pas plus.
Notez que j'ai utilisé le findOne()
méthode au lieu de find()
méthode. Je l'ai fait parce que find()
ne renvoie qu'un curseur, alors que findOne()
renvoie le document réel.
Nous pouvons obtenir la taille du document intégré en l'ajoutant à l'aide de la notation par points :
Object.bsonsize(
db.products.findOne().product
)
Résultat :
54
Nous pouvons obtenir la taille du document suivant en spécifiant son _id
comme argument de requête :
Object.bsonsize(
db.products.findOne({_id:2}).product
)
Résultat :
36
Voir MongoDB Object.bsonSize()
pour plus d'informations et d'exemples.