检查BsonValue是否为空

时间:2017-05-16 11:30:36

标签: c# .net mongodb bson

以mongo集合中的以下摘录为例:

Name

我想从此集合中提取null字段并将其放在C#对象中。但我不知道如何管理if (foo.Contains("IsBasedOnProduct")) { fooToExcel.Name = foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name") ? foo["IsBasedOnProduct"]["Name"].AsString : string.Empty; } 值。

这就是我在C#应用程序中所做的事情:

Name

nullSystem.ArgumentNullException时,我抛出一个string.Empty 我如何解决这个问题,以便在值null时放置{% for item in var:low_price_low_stock_goods %} {% endfor %}

3 个答案:

答案 0 :(得分:1)

使用以下代码快照修复它:

if (foo.Contains("IsBasedOnProduct") && foo["IsBasedOnProduct"].BsonType != BsonType.Null)
{
    fooToExcel.Name = foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name")&& foo["IsBasedOnProduct"]["Name"].BsonType != BsonType.Null ? 
                        foo["IsBasedOnProduct"]["Name"].AsString : string.Empty;
}

答案 1 :(得分:0)

在此之前你必须将BJson转换为JSON,在条件之后检查。

答案 2 :(得分:0)

@Xavier W answer正确另外还有一种解决方案需要检查,BsonValueNULL使用IsBsonNull属性 [自MongoDB.Bson版本2.3.0起]

解决方法:

if (foo.Contains("IsBasedOnProduct") && !foo["IsBasedOnProduct"].IsBsonNull)
{
    fooToExcel.Name = (foo["IsBasedOnProduct"].AsBsonDocument.Contains("Name") && !foo["IsBasedOnProduct"]["Name"].IsBsonNull) ? 
                        foo["IsBasedOnProduct"]["Name"].AsString : string.Empty;
}

IsBsonNull属性的文档-> https://mongodb.github.io/mongo-csharp-driver/2.3/apidocs/html/P_MongoDB_Bson_BsonValue_IsBsonNull.htm