У меня есть документ в этом формате:
{
_id: ...,
myArray: [{other: stuff}, {other: stuff}, ...],
...
}
Я хочу найти элементы, которые соответствуют определенным вещам, например, значение _id
или поля из вложенных документов в myArray
.
Я хочу вернуть документы, но с отфильтрованным MyArray
, где присутствуют только соответствующие поддокументы.
Я попытался создать проекцию и включить соответствующие элементы:
_mongoContext.myDocument
.Find(x => x.id == id & x.myArray.Any(y => myList.Contains(t.other)))
.Project<myModel>(Builders<myModel>.Projection.Include("myArray.$"))
Это, я думаю, должно возвращать только первый элемент, который соответствует myArray
вместо всех документов, а это не то, что я хочу (я хочу, чтобы все поддокументы, которые соответствуют запросу, присутствовали в возвращенном документе) .
И вообще, это даже не сработало, я получаю ошибку positional projection does not match the query document
. Может быть, это потому, что я не использую FindOne
?
В любом случае, как мне добиться того, что я ищу? (См. Вопрос жирным шрифтом)