Мне нужно выполнить довольно сложный запрос MongoDB, и мне очень сложно сузить всю вещь до одного запроса, хотя я думаю, что это выполнимо. На самом деле у меня нет достаточного опыта работы с MongoDB, чтобы получить его совершенно правильно, и я очень благодарен за помощь.MongoDB C# Query: Filter + Aggregation + Проверка значения true/false
Мой класс выглядит примерно так:
class MyItem
{
public int ID { get; set; }
public int Value { get; set; }
public bool IsDropped { get; set; }
}
Мне нужно, чтобы иметь возможность выбрать значение мин для каждого идентификатора, который не упал. Например:
items.Add(new MyItem() { ID = 1, Value = 100, IsDropped = true });
items.Add(new MyItem() { ID = 1, Value = 150, IsDropped = false });
items.Add(new MyItem() { ID = 1, Value = 200, IsDropped = true });
items.Add(new MyItem() { ID = 2, Value = 100, IsDropped = false });
items.Add(new MyItem() { ID = 2, Value = 250, IsDropped = false });
Для этих элементов, значения я хочу возвращенные:
ID: 1, Value: 150, IsDropped: false
ID: 2, Value: 100, IsDropped: false
Однако, если все значения для определенного ID отбрасываются, я хочу, чтобы иметь возможность знать, что хорошо так, например, для этих значений:
items.Add(new MyItem() { ID = 2, Value = 100, IsDropped = true });
items.Add(new MyItem() { ID = 2, Value = 150, IsDropped = true });
Я хочу получить:
ID: 2, Value: (doesn't really matter), IsDropped: true
Также на вершине, что мне нужно, чтобы быть в состоянии выполнять простые запросы фильтра, например «только возвращают элементы where ID == 1 || ID == 2
»
Можно ли это сделать в одном запросе? Я могу агрегировать класс на основе минимального значения, но добавление параметра IsDropped
в микс делает для меня очень трудным написать один запрос, который может выполнить все это.
Заранее благодарим за помощь.
Является ли ваш 'MyItem' корневой документ в коллекции? поскольку наличие дубликатов 'ID' невозможно. –