#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;