MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

2 sposoby na uzyskanie rozmiaru dokumentu w MongoDB

Jeśli chcesz zwrócić rozmiar dokumentu w MongoDB, możesz użyć następującego:

  • $bsonSize operator potoku agregacji
  • Object.bsonSize() metoda

Poniżej znajdują się przykłady każdego podejścia.

Przykładowe dane

W poniższych przykładach użyjemy kolekcji o nazwie products z następującymi dokumentami:

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

Zwróć uwagę, że każde pole produktu zawiera osadzony dokument.

Możemy zwrócić rozmiar całego dokumentu lub tylko osadzonego obiektu.

$bsonSize Operator potoku agregacji

Możemy użyć $bsonSize operator z $$ROOT zmienna systemowa, aby uzyskać rozmiar całego dokumentu. $$ROOT zmienna odnosi się do dokumentu, który jest aktualnie przetwarzany przez potok.

Przykład:

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

Wynik:

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

W tym przypadku otrzymujemy rozmiar wszystkich dokumentów w kolekcji, ale zawsze możesz przefiltrować go do jednego lub kilku dokumentów.

Aby uzyskać rozmiar osadzonych dokumentów, możemy zastąpić $$ROOT zmienna z nazwą pola dokumentów.

Przykład:

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

Wynik:

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

W tym przypadku nazwa pola to product dlatego używamy $product aby odnieść się do tego pola.

Zobacz MongoDB $bsonSize aby uzyskać więcej informacji i przykładów.

Object.bsonSize() Metoda

Object.bsonSize() metoda to kolejny sposób na uzyskanie rozmiaru dokumentu.

Przykład:

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

Wynik:

81

Ta metoda zwraca tylko rozmiar i nic więcej.

Zauważ, że użyłem findOne() metoda zamiast find() metoda. Zrobiłem to, ponieważ find() zwraca tylko kursor, podczas gdy findOne() zwraca rzeczywisty dokument.

Możemy uzyskać rozmiar osadzonego dokumentu, dołączając go za pomocą notacji kropkowej:

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

Wynik:

54

Możemy uzyskać rozmiar następnego dokumentu, określając jego _id jako argument zapytania:

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

Wynik:

36

Zobacz MongoDB Object.bsonSize() aby uzyskać więcej informacji i przykładów.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose — RangeError:przekroczono maksymalny rozmiar stosu wywołań

  2. Sprawdź, czy pole istnieje w MongoDB

  3. Zwrócić ograniczoną liczbę rekordów określonego typu, ale nieograniczoną liczbę innych rekordów?

  4. Jak znaleźć zapytania nie używające indeksów lub powolne w mongodb

  5. Jak mogę użyć operatora „Not Like” w MongoDB?