Как обновить Монго ДБ все записи в C # - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть коллекция mongo db, в которой хранится JSON. По ошибке одно значение элемента было обновлено неправильно во всех записях коллекции.

Как мне обновить конкретный элемент?

Мой JSON похож на

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

здесь значение свойства value должно быть длинным полем, значение будет заменено на

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

значение должно быть обрезано как первые 10 символов существующего значения.

После обновления (из ответа @mickl), different format - other than numeric

Преобразование в Int также получило ошибку! Screen

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете использовать оператор $ 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");
...