Считайте, что у вас есть Order и OrderDetails. Я пытаюсь отфильтровать детали заказа для указанного c заказа. Например, если у вас есть что-то вроде этого:
{
"orders": [
{
"id": 1,
"date": "02.04.2020 ...",
"user": {
"name": "xx",
"surname": "yy"
},
"orderDetails": [
{
"id": 1,
"productId": 5,
"quantity": 1,
"state": 3
},
{
"id": 2,
"productId": 3,
"quantity": 4,
"state": 3
},
{
"id": 3,
"productId": 4,
"quantity": 12,
"state": 2
},
{
"id": 4,
"productId": 7,
"quantity": 8,
"state": 2
},
{
"id": 5,
"productId": 12,
"quantity": 9,
"state": 3
}
]
},
{
"id": 2,
"date": "01.04.2020 ...",
"user": {
"name": "xx",
"surname": "yy"
},
"orderDetails": [
{
"id": 6,
"productId": 5,
"quantity": 1,
"state": 3
},
{
"id": 7,
"productId": 3,
"quantity": 4,
"state": 3
},
{
"id": 8,
"productId": 4,
"quantity": 12,
"state": 2
}
]
}
}
Я пытаюсь сначала выполнить фильтрацию по заказу, а затем состояние детализации заказа. У меня есть такой код, но он всегда приносит правильный порядок со всеми orderDetails. Похоже, ему не важен равный фильтр для orderDetails.
На самом деле он работает, но не фильтрует. Потому что у меня есть только 3 типа состояния (enum), а значения int равны 1,2,3. Запрос ничего не приносит, если я дам 4.
var builder = Builders<Order>.Filter;
var filter = builderk.And(builder.Eq("_id", ObjectId.Parse(elementid)), builder.Eq("orderDetails.state", 3));
var result = _mongoRepository.FindByFilter(filter).ToList();
Я также пробовал AnyEq и что-то подобное, но фильтры не работали.
Я буду очень рад, если кто-нибудь сможет мне помочь.
Спасибо ,