[英]MongoDB c# driver SetWrapped issue
**更新了更多代码:
我有一个类似于
public class price
{
public decimal mrp { get; set; }
}
这是复杂文档的一部分,如下所示:
{
"Name" : "Name",
"_id" : ObjectId("522a83c2a833e20db4b028ea"),
"price" : {
"mrp" : 599,
}
}
我正在使用c#驱动程序来更新此文档...如下所示:
//用于检查doc私有布尔中是否存在字段的函数check_field(BsonDocument doc,字符串field_name){if(doc.Contains(field_name)){返回true; } else {返回false; }}
//获取整个文档
foreach (var c in cursor)
{
product prd = new product();
prd.id = check_field(c.ToBsonDocument(), "id") ? convertToString(c.ToBsonDocument()["id"]) : null;
prd.price = check_field(c.ToBsonDocument(), "price") ? JsonConvert.DeserializeObject<price>(c.ToBsonDocument()["price"].ToString()) : null;
products.Add(prd);
}
for (var i = 0; i < products.Count(); i++)
{
price price_list = new price();
price_list.mrp = 500;
MongoDB.Driver.Builders.UpdateBuilder update = MongoDB.Driver.Builders.Update.SetWrapped("price", (price)price_list);
}
当我执行命令时,我希望$ set命令被发出为
{ "$set" : { "price" : { "mrp" : 500 }}}
but get this instead
{ "$set" : { "price" : { "mrp" : "599" }}}
任何帮助/指针将非常有帮助
最后,当我将数据类型更改为double(或float)时,它运行良好。 十进制为64位-因此mongo将其存储为NumberLong。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.