Запрос по массиву ObjectIds

1

У меня есть массив ObjectID s, представляющий _id значения для документов в коллекции:

ObjectID[] documentsAffected

Как я могу подготовить запрос для возврата всех документов, на которые ссылаются в этом массиве?

Я посмотрел на следующее, но он работает только с отдельными значениями, а не с массивами:

Query.EQ("_id", documentsAffected)

Я не хочу писать цикл for и должен возвращать один документ за раз, потому что мне тогда нужно обновлять эти документы таким же образом, и это кажется неэффективным, когда я могу обновить их все в одном из операторов после их получения,

Есть ли способ эффективно это сделать? Если нет, есть ли другой способ вернуть все документы на основе некоторого списка элементов, которые ссылаются на них?

Теги:
mongodb-query
mongodb-.net-driver

1 ответ

1
Лучший ответ

Вы можете использовать In вместо EQ:

Query.In("_id", documentsAffected);

Или лучше, используя типизированные параметры:

Query<Document>.In(doc => doc.Id, documentsAffected);

Это создаст запрос с помощью оператора $in:

Оператор $ in выбирает документы, в которых значение поля равно любому значению в указанном массиве. Если поле содержит массив, то оператор $ in выбирает документы, поле которых содержит массив, содержащий хотя бы один элемент, который соответствует значению в указанном массиве

От $in

  • 1
    Спасибо! В итоге я выбрал второй вариант, который вы указали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню