Похоже, вам понадобится агрегатная операция.
Этот документ может помочь вам:
Поиск в массиве
Вы можете выполнить несколько поисков за одну операцию агрегирования, чтобы вы могли проверить обе коллекции подмножеств.
Я предполагаю, что вы работаете с REST API и клиент отправляет запрос на подмножество документов из коллекции надмножеств. Затем вы можете отправить массив документов, который вы хотите проверить, из суперсета с клиента:
1 - сопоставить все документы в надмножестве с массивом документов, которые вы отправляете
2 - раскрутить массив расширенных документов
3 - искать коллекции подмножеств в поле "str_id" и устанавливать в поле, например "subset_one_results".
4 - выполнить операцию сопоставления с обоими результатами подмножества, которая возвращает пустой массив, скажем, «subset_one_results» ... это будет соответствовать всем документам надмножества, которые не содержатся в подмножестве 1, например.
$match({ $and : { "subset_one_results" : { $eq : [] } }, { "subset_two_results" : { $eq : [] } } })
5 - сгруппировать их в новый массив, если вы хотите вернуть их как массив клиенту.
Чтобы повысить производительность ваших операций, вы должны определить, как часто будет выполняться этот запрос. Если это часто случается, обязательно создайте индекс для поля, которое будет запрашиваться, если это , а не поле ObjectId. По вашему коду я не могу сказать, используете ли вы пользовательское строковое поле или ObjectId, поэтому я поднимаю этот вопрос.
Я не знаю, что вы используете для выполнения ваших запросов (чистый язык запросов MongoDB, драйвер и т. Д.), Поэтому я не уверен, как ответить с помощью кода, поэтому в общих чертах описан процесс, описанный выше.