如何在C#中更新Mongo DB所有记录

时间:2018-11-16 11:17:27

标签: c# mongodb mongodb-query mongodb-.net-driver mongodb-csharp-2.0

我有用于存储JSON的mongo db集合。 错误地,一个元素值在集合的所有记录中被错误地更新。

我将如何更新特定元素?

我的json就像

{
status:
   {
     name:"john",
     value: "12345678903333.444"
   }
}

此处value属性值应为long字段,值将替换为

{
status:
   {
     "name":"john",
     "value": 1234567890
  }
} 

值应修剪为现有值的前10个字符。

更新后(来自@mickl答案), different format - other than numeric

转换为Int也会出错! Screen

1 个答案:

答案 0 :(得分:1)

您可以将$substr运算符与$toDouble结合使用,将字符串转换为数字,然后使用$out将聚合结果重定向到同一集合中(这将基本上更新其所有文档),请尝试Mongo外壳:

db.col.aggregate([
    {
        $addFields: {
            "status.value": { $toDouble: { $substr: [ "$status.value", 0, 10 ] } }
        }
    },
    {
        $out: "col"
    }
])

或使用C#代码:

var addFieldsBody = "{ $addFields: { \"status.value\": { $toDouble: { $substr: [ \"$status.value\", 0, 10 ] } } } }";

Col.Aggregate()
   .AppendStage<BsonDocument>(BsonDocument.Parse(addFieldsBody))
   .Out("col");