Правильный индекс для фильтрации поля в массиве с оператором $ в MongoDBC#

Место общения программистов C#
Ответить
Anonymous
 Правильный индекс для фильтрации поля в массиве с оператором $ в MongoDB

Сообщение Anonymous »

У меня есть база данных MongoDB, содержащая 500000 документа в одной коллекции, используемой сервисом ASP Net Core для фильтрации документов, в основном выполняющих много операций CRUD. Установка представляет собой автономную базу данных MongoDB. Мои документы содержат много полей, но один отфильтрован в каждом запросе, который является полем token . Я создал много составных индексов с этим полем и всеми остальными полем, которые я использую для сортировки. Из примера я создал следующий индекс: < /p>
{ v: 2, key: { token: 1, updateDate: -1 }, name: 'TokenUpdateDate' }

, которые фильтровали документы на основе поля токена и других возможных полей и сортируют их на основе поля обновления. В MongoDB Compass я вижу, что все мои запросы используют мои индексы, которые хороши и ускоряют мои запросы. Однако при фильтрации поля токена с использованием $ в операторе, иногда он может в конечном итоге составлять до 30-40 значений в нем, и когда это происходит, производительность запроса резко падает, хотя используется индекс. Это не может быть изменено, поэтому я хочу спросить, есть ли какое -либо решение или, может быть, другой подход для этого конкретного варианта использования. Есть ли другой способ отфильтровать использование $ в операторе или лучший индекс? Я использую последнюю версию драйвера MongoDB C#.{categoryId: 1, aimId: 1, areaId: {$in: [2341, 2302]}, constructYearFrom: {$gte: 1990}, token: {$in: ["04490892-dc1d-4ddf-9d9f-3322036d496a","8761e684-0c63-443c-8f91-2f6f70ae3eaa","2b333c40-12ef-4aa0-8acb-52be7af18948","6927ddbc-7d0a-4208-a22b-82ea2989e8f3","28a29a92-f26e-47e5-ba92-364c8fac814f","dbb4be57-af9b-4ee4-be1d-d7b29bfffd9d","f3d98dbf-d518-43ca-9562-dd595b3170e6","fe027387-72de-41e4-8110-71c2a5bc39ac","66c04f3b-79ac-4982-b404-3170347ab68d","facd245c-69b1-412d-8565-a94747b4098c","ec972bee-5a23-496c-9739-8b8842130bd5","0c1a8953-5cf2-4d6c-ab34-9e00aa144b07","ccf34324-6543-435b-91a2-5c24d5cd9013","3f91c659-7659-493d-ab8a-7eb92ea88088","1ce7d820-7b1a-4d75-ba05-8a595deb6bf8","b3e3d07d-6256-4ca3-b2c3-b39852e24e0f","f38b5251-a916-445c-a257-1426a899bd17","6d44bb06-9212-4252-9c63-08b90a13619d","7f330f3c-c004-45ae-9c14-9d0b4928af6a","f40c145d-0a83-4df8-9e1b-9b93cbb9e79f","5ee5e73e-4f24-40c1-8a9f-0334044dfe6b","0b30dd64-6e04-4128-9688-c0dd44d995be"]}}


Подробнее здесь: https://stackoverflow.com/questions/794 ... in-mongodb
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»