(простите мой newbiness.) Если даны следующие классы, как бы вы.Net MongoDB Driver субколлекций, строителей, и Проекции
- Запрос на свойстве подколлекцию. (Избегайте строк как можно больше)
- Проецировать и отображать результат в заданный DTO?
Классы:
public class Customer{
public ObjectId Id;
public string FirstName;
public string LastName;
.
.
. (Other Properties specific to the customer profile)
public IEnumerable<Transaction> Transactions;
}
public class Transaction{
public ObjectId ItemId;
public DateTime PurchaseDate;
.
.
. (etc.)
}
public class TransactionDTO{
public ObjectId CustomerId;
public string FirstName;
public ObjectId ItemId;
public DateTime PurchaseDate;
}
Помимо каких-либо проблем компилировать там может быть, это неправильно/правильный подход к Монго?
Как получить список транзакций, где ItemId == x проецируется в TransactionDTO, используя класс Builders, указанный в драйвере mongo.
Это то, куда я направляюсь, но я столкнулся с некоторыми дорожными блоками.
для запроса основной коллекции (Customer) на конкретный объект недвижимости можно построить запрос, как это:
Builders<Customer>.Filter.Eq(c=>c.firstname,"Bob");
, но используя этот синтаксис не могу запросить на подколлекцию.
Builders<Customer>.Filter.Eq(c=>c.Transactions....????, "match condition");
так что уместно, чтобы иметь возможность запросить? Точно так же проекция будет выглядеть примерно так:
Builders<Customer>.Projection.Expression(c=> new TransactionDTO(){
CustomerId = x.Id,
FirstName = x.FirstName, // <- these should be fine.
itemId = x.Transaction...???
PurchaseDate = x.Transaction....???
})
Это правильно, но не отвечает на сложность вопроса. У меня есть массив объектов, хранящихся внутри основной коллекции, с которой я пытаюсь совместить. которые могут вернуть многие объекты «MainClass». после того, как у меня есть результаты, я хочу сопоставить его с третьим классом. что сложно только из-за массива объектов. концептуально я разворачиваю объекты, а затем запрашиваю свойство разворачиваемого объекта, а затем сопоставляю его с новым классом, который имеет свойства как от объекта внутри массива, так и от объекта, содержащего массив. –