Как создать документ Bson с нулевым значением с помощью официального драйвера C#?
У меня есть объекты с 3 строковыми полями страна, провинция, город. Они могут содержать null или некоторое строковое имя.
Я хочу запросить все данные с одинаковыми значениями.
Например, мне нужны все данные, где
City = null,
Province = "WA",
Country = "USA"
Я создал BsonDocument:
var lookup = new QueryDocument
{
{"GeoPosition.City", userLocation.City},
{"GeoPosition.Province", userLocation.Province},
{"GeoPosition.Country", userLocation.Country}
};
Но нулевое поле было выброшено, и документ выглядит так:
{
"GeoPosition.Province" : "WA",
"GeoPosition.Country" : "USA"
}
Если я пытаюсь использовать
Query.EQ("GeoPosition.City", userLocation.City)
У меня есть исключение, говорящее, что параметр не может быть нулевым.
Как я вижу в документации нет проблема в построении проверки запроса, если значение равно null. Так что это проблема с драйвером C#. Есть идеи, как решить эту проблему?
2 ответа:
Зависит от типа данных переменной city. Если переменная city имеет тип BsonValue, вы можете использовать ?? оператор напрямую:
BsonValue city = null; var query = Query.EQ("city", city ?? BsonNull.Value); Console.WriteLine(query.ToJson());
Если ваша переменная city имеет тип string, вам нужно дополнительное приведение преобразования, чтобы сделать компилятор счастливым:
string city = null; var query = Query.EQ("city", (BsonValue)city ?? BsonNull.Value); Console.WriteLine(query.ToJson());