MongoDB - Условие для вложенных документов с использованием Linq
Я использую драйвер mongo-csharp для запроса моих сущностей Mongo. У меня есть следующие объекты, которые хранятся в Монго:
public class Table
{
public int Id { get; private set; }
public string Description{ get; private set; }
public List<Player> Players { get; private set; }
public Table()
{
}
}
public class Player
{
public int Id { get; private set; }
public string Username{ get; private set; }
public Player()
{
}
}
Когда я пытаюсь запросить объект "Таблица" по идентификатору или описанию, я получаю соответствующие результаты, но когда я пытаюсь сделать запрос по списку игроков, я получаю ноль:
// Works ok
var tab1 = mongo.GetCollection<Table>().Where(g => g.Description == "Test");
// Always return null, although should return the same result
var tab2 = mongo.GetCollection<Table>().Where(g => g.Players.Count > 90).FirstOrDefault();
Что мне здесь не хватает? Спасибо, Нир.
1 ответ
Решение
Проблема в том, что свойство Count переводится в оператор запроса $size.
На связанной странице AdvancedQueries вы можете увидеть, что:
"Вы не можете использовать $size, чтобы найти диапазон размеров (например: массивы с более чем одним элементом)".