почему Filter поступает определённым образом.
Допустим, есть модель (простейшая, везде string):
SomeObject
{
"_id": "Guid1",
"OwnerId" : "Guid2"
}
В коллекции, соответственно, два дока, пусть будет
{
"_id": "Guid1",
"OwnerId" : "Guid2"
}
и
{
"_id": "Guid100500",
"OwnerId" : "Guid2"
}
Я делаю так:
var ids = new List<string>{"Guid1"};
var filter = Builders<SomeObject>.Filter.In("_id", ids);
Builders<T>.Filter.And(Builder<SomeObject>.Eq("OwnerId", "Guid2"));
var documentsFromDb = await collection
.Find(filter).ToListAsync();
Почему мне приходят ОБА дока, а не только первый, ведь у меня прописано AND? Что я делаю не так? То есть как будто бы фильтру становится до лампочки, что у него есть условие, чтобы айдишник был строго в списке.
Решил проблему, всем спс. =)
Просто надо было заменить Builders<T>.Filter.And(Builder<SomeObject>.Eq("OwnerId", "Guid2")); на filter = filter & (Builder<SomeObject>.Eq("OwnerId", "Guid2"));
Обсуждают сегодня