Проблема с размером объекта MongoDB в C#

#c# #mongodb

#c# #mongodb

Вопрос:

Моя проблема в том, что мы пытаемся вставить документ в MongoDB, и, похоже, его размер превышает ограничение в 16 МБ. Теперь мы можем отлаживать и видеть, что агрегируется с самим полным объектом, но я не знаю способа узнать, какая часть вложенного документа соответствует большому размеру файла в C #.

Кто-нибудь знает способ добиться этого?

Заранее спасибо.

/ За

Комментарии:

1. Это не отвечает на ваш вопрос, но, если вы знаете, что ваш документ будет «большим», не используйте MongoDB для его хранения. Храните данные объекта в виде системного файла и в расположении файла хранилища mongo, которое можно запросить отдельно.

Ответ №1:

MongoDB хранит все данные в виде документов JSON. И ограничение в 16 МБ засчитывается как обрезанный файл JSON без ненужных отступов.

Чтобы получить тот же результат, проанализируйте свой объект в формате JSON с помощью MongoDB serializer или используйте внешний, например Json.NET .

Затем проверьте этот документ JSON или выполните некоторые вычисления, чтобы узнать, сколько символов в каждой части документа, и действуйте в соответствии с вашей архитектурой, чтобы уменьшить этот документ до уровня ниже предела или…

… не используйте MongoDB для его хранения. Храните данные объекта в виде системного файла и в расположении файла хранилища mongo, которое можно запросить отдельно.

Ответ №2:

Mongo предоставляет способ работы с документами размером более 16 МБ, называемыми gridfs, с некоторыми ограничениями. В двух словах он разбивает ваш входной документ на куски и управляет работой с ним. Чтобы получить размер объекта после сериализации, вы можете попробовать это:

 var byteArrayLength = new TestEntity().ToBson().Length;