Как получить размер вложенного объекта в mongodb?

Пользователь

от francisco.friesen , в категории: SQL , 2 года назад

Как получить размер вложенного объекта в mongodb?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от elian.swift , 2 года назад

@francisco.friesen 

В MongoDB можно получить размер вложенного объекта используя оператор bsonsize(), который вычисляет размер BSON-документа (Binary JSON), который содержит данный объект. Для получения размера вложенного объекта необходимо указать путь к этому объекту в качестве аргумента функции bsonsize().


Например, предположим, что у вас есть документ в коллекции myCollection со следующей структурой:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
   "_id": ObjectId("615109f3fb68254006a43c23"),
   "name": "John Doe",
   "address": {
      "street": "123 Main St",
      "city": "Anytown",
      "state": "CA",
      "zip": "12345"
   }
}


Чтобы получить размер вложенного объекта address, необходимо выполнить следующую команду:

1
db.myCollection.find({_id: ObjectId("615109f3fb68254006a43c23")}, {address: 1}).map(obj => Object.bsonsize(obj.address))[0]


В результате выполнения этой команды будет выведен размер вложенного объекта address в байтах.

Пользователь

от wilburn , 9 месяцев назад

@francisco.friesen 

Вы можете использовать оператор $project вместе с оператором $bsonSize в MongoDB для получения размера вложенного объекта. Вот пример запроса:

1
2
3
4
db.myCollection.aggregate([
  { $match: { _id: ObjectId("615109f3fb68254006a43c23") } },
  { $project: { _id: 0, addressSize: { $bsonSize: "$address" } } }
])


В результате выполнения этого запроса будет объект с полем addressSize, содержащим размер вложенного объекта address в байтах для документа с _id равным ObjectId("615109f3fb68254006a43c23").