c# - 如果字段为空,如何不在 mongodb 中插入字段?

标签 c# asp.net .net mongodb mongodb-.net-driver

我不希望 mongodb 创建一个日期/时间字段,如果我传递一个空值,下面的代码适用于所有非日期类型但不适用于日期类型。它创建一个具有空值的日期/时间字段。这是我下面的 bsondocument 的代码片段

   {"stringfield", stringfield= string.IsNullOrWhiteSpace(stringfield)?null:stringfield},
   {"datetime", datetime.HasValue == false ?null:datetime}

注意:我没有使用任何类将 mongodb 字段映射到属性,而是直接创建一个 bsondocument 并将该文档插入 mongodb。

我尝试在下面的代码中使用约定包,但我想这仅适用于我创建类以将 mongofields 映射到属性时?

        var pack = new ConventionPack();
        var ignoreIfNull = new IgnoreIfNullConvention(true);
        pack.Add(ignoreIfNull);
        ConventionRegistry.Register("ignoreNulls", pack, t => true);

最佳答案

如果您不想插入带有空值的字段,请不要插入带有空值的字段。相反,根本不要将该字段放入文档中。意思是,而不是这个:

db.stuff.insert({ "a" : 1, "b" : null })

这样做

db.stuff.insert({ "a" : 1 })

无论如何插入字段的空值对您来说可能不是问题,因为它们的行为类似于查询的缺失值:

> db.test.drop()
> db.test.insert({ "a" : 1 })
> db.test.insert({ "a" : 1, "b" : null })
> db.test.count({ "b" : null })
2

关于c# - 如果字段为空,如何不在 mongodb 中插入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27417445/

相关文章:

.NET远程速度和VPN

C#/Java - 从 Android 模拟器使用 WCF 服务

c# - 文本区域和超链接?

c# - 使用 Xamarin 从 iPhone 中的麦克风流式传输音频

c# - MVC4 从服务器到客户端的回调

c# - 参数 1 : cannot convert from 'System.Collections.Generic.List' to 'System.Collections.Generic.List'

javascript - JavaScript 中的消息框

.net - 在.Net中添加具有父节点命名空间的XmlNode

.net - 子事件的自定义事件设置参数

c# - 为什么数据库查询只会在应用程序中变慢?