使用C#驱动程序强制MongoDB存储0值
我将MongoDB与C#一起使用,遇到了一个问题,即如果我将一个对象发送到mongo中存储,那么任何=0的整数值都不会被存储 例如,如果我有这样一个类:使用C#驱动程序强制MongoDB存储0值,c#,mongodb,C#,Mongodb,我将MongoDB与C#一起使用,遇到了一个问题,即如果我将一个对象发送到mongo中存储,那么任何=0的整数值都不会被存储 例如,如果我有这样一个类: public class Data { public int x { get; set; } public int y { get; set; } } var document = new Data { x = 1, y = 0 }; collection.Insert(document); 然后我创建了一个值为x=1和y=
public class Data
{
public int x { get; set; }
public int y { get; set; }
}
var document = new Data { x = 1, y = 0 };
collection.Insert(document);
然后我创建了一个值为x=1和y=0的实例,并将其存储在mongo中,结果如下:
{
"x" : 1
}
而我想要的是:
{
"x" : 1,
"y" : 0
}
我觉得我肯定错过了什么,因为我找不到其他人对此有问题
我之所以需要0值,是因为我需要将它与mongo聚合函数一起使用
谢谢。我无法复制您正在报告的内容。我使用您的数据类创建了一个测试程序,并在MongoDB中存储了一个文档,如下所示:
public class Data
{
public int x { get; set; }
public int y { get; set; }
}
var document = new Data { x = 1, y = 0 };
collection.Insert(document);
然后,我使用MongoDB shell查看插入数据库的内容:
> db.data.find()
{ "_id" : ObjectId("550c7542f266222543e1d16d"), "x" : 1, "y" : 0 }
>
它确实存储了值为0的y
您是否配置了任何可能覆盖0值序列化方式的约定?您可以按如下方式为数据类注册类映射,以指示mongodb存储y的默认值
BsonClassMap.RegisterClassMap<Data>( cm =>
{
cm.AutoMap();
cm.MapMember(d => d.y).SetIgnoreIfDefault(false);
});
BsonClassMap.RegisterClassMap(cm=>
{
cm.AutoMap();
cm.MapMember(d=>d.y).SetIgnoreIfDefault(false);
});
您能否至少向我们展示一下您的代码中进行更新的相关部分?我不确定您的意思,我只是在使用mongo驱动程序的插入功能:Collection.Insert(data);想知道您是如何填充数据对象的,以便我可以建议一种替代方法,如var data=new BsonDocument().Add(“x”,1).Add(“y”,0);实体。保存(数据)代码>