Pav*_*kiy 7 mongodb mongodb-.net-driver
我有3个字符串字段Country,Province,City的对象.它们可以包含null或一些字符串名称.
我想用完全相同的值查询所有数据.
例如,我需要所有数据
City = null,
Province = "WA",
Country = "USA"
Run Code Online (Sandbox Code Playgroud)
我创建了BsonDocument:
var lookup = new QueryDocument
{
{"GeoPosition.City", userLocation.City},
{"GeoPosition.Province", userLocation.Province},
{"GeoPosition.Country", userLocation.Country}
};
Run Code Online (Sandbox Code Playgroud)
但是null字段被丢弃了,文档看起来像:
{
"GeoPosition.Province" : "WA",
"GeoPosition.Country" : "USA"
}
Run Code Online (Sandbox Code Playgroud)
如果我正在使用
Query.EQ("GeoPosition.City", userLocation.City)
Run Code Online (Sandbox Code Playgroud)
我有例外说参数不能为空.
正如我在文档中看到的那样,如果value等于null,则构建查询检查没有问题.所以这是C#驱动程序的问题.任何想法如何解决这个问题?
Rob*_*tam 11
取决于您的城市变量的数据类型.如果city变量的类型为BsonValue,你可以使用?? 直接运营商:
BsonValue city = null;
var query = Query.EQ("city", city ?? BsonNull.Value);
Console.WriteLine(query.ToJson());
Run Code Online (Sandbox Code Playgroud)
如果您的city变量是string类型,则需要额外的转换强制转换以使编译器满意:
string city = null;
var query = Query.EQ("city", (BsonValue)city ?? BsonNull.Value);
Console.WriteLine(query.ToJson());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13052 次 |
| 最近记录: |