Новая (2.6) платформа агрегации $ cond с c #?

#mongodb-.net-driver

#mongodb-.net-driver

Вопрос:

Я схожу с ума от этого…

У меня это выражение структуры агрегации работает как шарм в оболочке mongo:

 { $group : 
    {
    _id : '$Code' , 
    'Special' : { $sum : { $cond: [{ $eq: [ '$Special', 'Success']},1,0]}}
    }
}
 

Мне нужно сделать это на c #, я перепробовал много комбинаций, но безуспешно.

Кто-нибудь знает?

Спасибо

Ответ №1:

Попробуйте:

 var group = new BsonDocument
{
    {
        "$group",
        new BsonDocument
        {
            {
                "_id", "$Code"
            },
            {
                "Special", new BsonDocument
                {
                    { "$sum", new BsonDocument
                        {
                            {"$cond", new BsonArray
                                {
                                    new BsonDocument
                                    {
                                        {
                                            "$eq", new BsonArray {"$Special", "Success"}
                                        }
                                    },
                                    1,
                                    0
                                }
                            }
                        }
                    }
                }
            }
        }
    }
};
 

Комментарии:

1. Спасибо! Вы сделали это! Кстати, драйвер C # для агрегации настолько сложный и подробный! Если бы он мог получить стандартный формат javascript на входе, это действительно могло бы помочь.

2. Согласен. Код агрегации, который вы в конечном итоге пишете, выглядит отвратительно. Другие разработчики не смогут сразу понять, что происходит.