我有用于存储JSON的mongo db集合。 错误地,一个元素值在集合的所有记录中被错误地更新。
我将如何更新特定元素?
我的json就像
{
status:
{
name:"john",
value: "12345678903333.444"
}
}
此处value属性值应为long字段,值将替换为
{
status:
{
"name":"john",
"value": 1234567890
}
}
值应修剪为现有值的前10个字符。
答案 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");