Как построить динамическое c mon go FilterDefinition путем объединения строк? - PullRequest
0 голосов
/ 20 апреля 2020

У меня ниже определение фильтра, встроенное из C#.

        FilterDefinition<BsonDocument> filter
            = "{\"request.ignore\":\"0\", \"created\":{$gte:ISODate(\"" + DateFrom + "T00:00:00.000Z\"),$lt:ISODate(\"" + DateTo + "T23:59:59.000Z\") }, " +
              "\"response.resultData.isOk\":true, \"request.status\":\"" + status + 
              "\", \"request.deptId\" : { $eq : \"" + Convert.ToInt32(DeptId).ToString() + "\"}";     

Работает отлично. Однако, если я объединяю строки, добавляя приведенный ниже фрагмент кода, он не работает:

        if (!string.IsNullOrEmpty(userName))
        {
            filter += ", \"request.userName\" : { $eq : \"" + userName + "\"}";
        }

        filter += "}";

Выдается исключение System.FormatException, говорящее:

{"JSON, который ожидал читатель значение, но найдено 'MongoDB'. "}

... при выполнении ниже:

    List<BsonDocument> results = collection
        .Find(filter)
        .Sort(sort)
        .ToList();
...