2015-02-22 5 views
0

Я использую mongodb с драйвером C#. У меня есть объект (документ) с свойством типа List<ObjectId> (скажем arrProp).Mongo C#: Поле массива содержит элемент из заданного массива

Я хочу найти все документы, которые arrProp содержит хотя бы один элемент из данного массива (другой List<ObjectId>).

Есть ли способ получить результат в одном запросе?

+0

Пожалуйста, разместите код, который вы пытались до сих пор. –

ответ

2

Если вы используете драйвер версии 1.5 или более поздней версии, вы можете просто использовать содержит предикат, как описано в этом вопросе

https://jira.mongodb.org/browse/CSHARP-462

Если вы используете драйвер, который предварительно 1,5, вы можете использовать Следующий расширение

ContainsAny (LINQ к методу расширения MongoDB)

Этот метод используется для проверки, содержит ли поле массив (или массив типа) или свойство любого из предоставленных значений.

var query = 
    from c in collection.AsQueryable<C>() 
    where c.A.ContainsAny(new[] { 1, 2, 3 }) 
    select c; 
// or 
var query = 
    collection.AsQueryable<C>() 
    .Where(c => c.A.ContainsAny(new[] { 1, 2, 3 }));