MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

2 façons d'obtenir la taille d'un document dans MongoDB

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.