C# MongoDB Отфильтрованный отчет возврата драйвера «Команда не выполнена: команда слишком большая, ограничение 16 МБ» - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь получить из большой коллекции список поля hash256. Я использую драйвер MongoDB для C#, bau è вернуть эту ошибку: «Ошибка команды отличная: отличная слишком большая, ограничение 16 МБ». ища в Интернете, я нашел, что причиной является ограничение MongoDB в 10 МБ для объекта ответа, но я не могу найти решение.

Я нашел об объекте DistinctIterable, но не могу найти в c# Driver, и я думаю, что этот объект должен присутствовать только в Java Driver,

Кто-нибудь может мне помочь? Огромное спасибо

ConcurrentBag<InvoicePackage> InvoicePackageList = new ConcurrentBag<InvoicePackage>();

IMongoCollection<InvoicePackage> InvoicePackageCollection = null;
IMongoCollection<InvoicePackageSimple> InvoicePackageSimpleCollection = null;

//Impostazione collection Fatture Passive
InvoicePackageCollection = MongoDatabase.GetCollection<InvoicePackage>(oMongoEnvironment.PassiveCollection);
InvoicePackageSimpleCollection = MongoDatabase.GetCollection<InvoicePackageSimple>(oMongoEnvironment.PassiveSimpleCollection);

//Ricerca valori da filtrare
VatNumberFiscalCodeList.AddRange(InvoicePackageList.Select(x => x.Source.FatturaElettronicaHeader.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA.IdCodice));
VatNumberFiscalCodeList.AddRange(InvoicePackageList.Select(x => x.Source.FatturaElettronicaHeader.CessionarioCommittente.DatiAnagrafici.CodiceFiscale));
VatNumberFiscalCodeList = VatNumberFiscalCodeList.Distinct().ToList();

List<String> VatNumberFiscalCodeList = new List<String>();
FilterDefinition<InvoicePackage> oFilterDefinition = null;
FilterDefinition<InvoicePackageSimple> oFilterDefinitionSimple = null;

//Impostazione filtro per reperimento chiavi univoche ordinarie (IDSDI e HashSHA256)
oFilterDefinition =
                    (
                    Builders<InvoicePackage>.Filter.In(x => x.Source.FatturaElettronicaHeader.CessionarioCommittente.DatiAnagrafici.IdFiscaleIVA.IdCodice, VatNumberFiscalCodeList)
                    |
                    Builders<InvoicePackage>.Filter.In(x => x.Source.FatturaElettronicaHeader.CessionarioCommittente.DatiAnagrafici.CodiceFiscale, VatNumberFiscalCodeList)
                    );

//Impostazione filtro per reperimento chiavi univoche semplificate (IDSDI e HashSHA256)
oFilterDefinitionSimple =
                        (
                        Builders<InvoicePackageSimple>.Filter.In(x => x.Source.FatturaElettronicaHeader.CessionarioCommittente.IdentificativiFiscali.IdFiscaleIVA.IdCodice, VatNumberFiscalCodeList)
                        |
                        Builders<InvoicePackageSimple>.Filter.In(x => x.Source.FatturaElettronicaHeader.CessionarioCommittente.IdentificativiFiscali.CodiceFiscale, VatNumberFiscalCodeList)
                        );


//Reperimento HashSHA256 già presenti su MongoDB (Ordinarie + semplificate)
ExpressionFieldDefinition<InvoicePackage, String> oHashSHA256ExpressionFieldDefinition = new ExpressionFieldDefinition<InvoicePackage, String>(x => x.HashSHA256);
ExpressionFieldDefinition<InvoicePackageSimple, String> oHashSHA256ExpressionFieldDefinitionSimple = new ExpressionFieldDefinition<InvoicePackageSimple, String>(x => x.HashSHA256);
List<String> HashSHA256EsistentiList = new List<String>();
HashSHA256EsistentiList.AddRange(InvoicePackageCollection.Distinct<String>(oHashSHA256ExpressionFieldDefinition, oFilterDefinition).ToList());
HashSHA256EsistentiList.AddRange(InvoicePackageSimpleCollection.Distinct<String>(oHashSHA256ExpressionFieldDefinitionSimple, oFilterDefinitionSimple).ToList());

задание в стиле че мой родной герой

HashSHA256EsistentiList.AddRange(InvoicePackageSimpleCollection.Distinct<String>`(oHashSHA256ExpressionFieldDefinitionSimple, oFilterDefinitionSimple).ToList());
...