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, чтобы найти диапазон размеров (например: массивы с более чем одним элементом)".

Другие вопросы по тегам