我不希望mongodb创建日期/时间字段,如果我传递的是空值,则下面的代码适用于所有非日期类型但是日期类型失败。它创建一个带有空值的日期/时间字段。这是我的bsondocument下面的代码片段
{"stringfield", stringfield= string.IsNullOrWhiteSpace(stringfield)?null:stringfield},
{"datetime", datetime.HasValue == false ?null:datetime}
注意:我没有使用任何类将mongodb字段映射到属性,而是直接创建bsondocument并在mongodb中插入该文档。
我尝试使用下面的代码使用Convention包,但我想这只适用于我创建类来将mongofields映射到属性?
var pack = new ConventionPack();
var ignoreIfNull = new IgnoreIfNullConvention(true);
pack.Add(ignoreIfNull);
ConventionRegistry.Register("ignoreNulls", pack, t => true);
答案 0 :(得分:1)
如果您不想插入具有空值的字段,请不要插入空值。相反,根本不要将字段放在文档中。意思是,而不是:
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
答案 1 :(得分:1)
更新:根据评论中的人员的要求,我提供了一个正确的解决方案,并以链接作为参考。
如果nullbale' mydate'以下是在mongodb文档中设置日期字段的代码段。参数有一个值,或者如果它的null或为空,则根本不创建该字段。
{ "date", mydate.Value, mydate.HasValue }
以下是包含 @Craig Wilson 在 mongodb-csharp Google群组中的答案的参考链接,因为我也在那里发布了同样的问题。< / p>