Я хочу иметь возможность проецировать другой тип при запросе MongoDB с использованием SDK C#.Проецирование на другой тип с использованием C# SDK
Например, ниже я хочу запросить коллекцию с помощью построителя фильтров (или выражения LINQ) для MyType
, но я хочу проецировать результат MySubType
.
var mySubTypes = Database
.GetCollection<MyType>("MyCollection")
.Find(Builders<MyType>.Filter.AnyIn(x => x.Documents, documentId))
.ProjectTo<MySubType>() // Project to another type??
.ToList();
Можно представить себе MySubType
быть подмножеством MyType
, представлены с использованием наследования:
public class MyType : MySubType
{
[BsonElement("documents")]
public List<string> Documents { get; set; }
}
public class MySubType
{
[BsonElement("name")]
public string Name { get; set; }
}
Почему я хочу, чтобы это сделать?
Поскольку массив Documents
очень велик и используется исключительно во время запроса (то есть для фильтрации) в рамках механизма базы данных. Извлечение и сериализация этого массива будет ненужной.
Похоже, вы хотите Cast() https://msdn.microsoft.com/en-us/library/bb341406(v=vs.110).aspx –
0xFF
@fhlamarche: Нет, поскольку Мне нужно, чтобы проекция произошла внутри механизма базы данных, а не на стороне клиента. – davenewza
Не могли бы вы дать нам образец DataSet и ожидаемый результат? – Complexity