我有一个名为“Trades”的集合。这是集合的结构:
{
"TradeId": 1234,
"Products": [
{
"Name": "Test product",
"Offers": [
{
"SupplierName": "John Smith",
"OfferPrice": 12345.6
}],
"Requests": [
{
"CustomerName": "Anna Doe",
"RequestPrice": 28574.5
}]
}]
}
我需要获取指定交易的"Offers"数组,同时按产品名称进行过滤。以下是我目前所做的:
var filteredTrade = await _tradesCollection.Find(
x => x.TradeId == 1234)
.Project<Trade>(Builders<Trade>.Projection.ElemMatch(
x => x.Products,
i => i.Name == "Test product"))
.SingleOrDefaultAsync();
这按照产品名称过滤,与预期相符。但是查询还会获取整个请求集合。是否有任何方法可以仅获取报价集合或以某种方式排除请求集合?