MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

2 начина да получите размера на документа в MongoDB

Ако трябва да върнете размера на документ в MongoDB, можете да използвате следното:

  • $bsonSize оператор на тръбопровод за агрегация
  • Object.bsonSize() метод

По-долу са дадени примери за всеки подход.

Примерни данни

За следващите примери ще използваме колекция, наречена products със следните документи:

{ "_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" } }

Забележете, че всяко поле за продукт съдържа вграден документ.

Можем да върнем размера на целия документ или само на вградения обект.

$bsonSize Оператор на тръбопровод за агрегация

Можем да използваме $bsonSize оператор с $$ROOT системна променлива, за да получите размера на целия документ. $$ROOT променливата се отнася до документа, който в момента се обработва от конвейера.

Пример:

db.products.aggregate([
  {
    $project: {
      "rootSize": { $sum: { $bsonSize: "$$ROOT" } }
    }
  }
])

Резултат:

{ "_id" : 1, "rootSize" : 81 }
{ "_id" : 2, "rootSize" : 63 }
{ "_id" : 3, "rootSize" : 76 }

В този случай получаваме размера на всички документи в колекцията, но винаги можете да го филтрирате само до един или няколко документа.

За да получим размера на вградените документи, можем да заменим $$ROOT променлива с името на полето на документите.

Пример:

db.products.aggregate([
  {
    $project: {
      "documentSize": { $sum: { $bsonSize: "$product" } }
    }
  }
])

Резултат:

{ "_id" : 1, "documentSize" : 54 }
{ "_id" : 2, "documentSize" : 36 }
{ "_id" : 3, "documentSize" : 49 }

В този случай името на полето е product и затова използваме $product за препратка към това поле.

Вижте MongoDB $bsonSize за повече информация и примери.

Object.bsonSize() Метод

Object.bsonSize() методът е друг начин за получаване на размера на документ.

Пример:

Object.bsonsize(
    db.products.findOne()
)

Резултат:

81

Този метод връща само размера и не повече.

Имайте предвид, че използвах findOne() метод вместо find() метод. Направих това, защото find() връща само курсор, докато findOne() връща действителния документ.

Можем да получим размера на вградения документ, като го добавим с помощта на нотация с точки:

Object.bsonsize(
    db.products.findOne().product
)

Резултат:

54

Можем да получим размера на следващия документ, като посочим неговия _id като аргумент на заявката:

Object.bsonsize(
    db.products.findOne({_id:2}).product
)

Резултат:

36

Вижте MongoDB Object.bsonSize() за повече информация и примери.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo DB намира по име на поле с произволна стойност

  2. php mongodb пълнотекстово търсене и сортиране

  3. MongoDB Opensource срещу MongoDB Enterprise

  4. създаване на схема на мангуста

  5. MongoDB $atan