Chuyển đổi kiểu dữ liệu chuỗi số sang double với $convert
Sử dụng aggregation pipeline với $convert, $reduce, $split, $concat để loại bỏ dấu phẩy và chuyển sang double.
Dữ liệu chuỗi có dấu phẩy
> db.demo335.insertOne({"Value": "45,67,78.0"});
> db.demo335.insertOne({"Value": "17664,76,534.0"});
> db.demo335.insertOne({"Value": "8899,322,135,875.50"});
> db.demo335.insertOne({"Value": "1,533.07"});
Pipeline chuyển đổi
> db.demo335.aggregate([
{
$project: {
data: {
$convert: {
input: {
$reduce: {
input: { $split: ['$Value', ','] },
initialValue: '',
in: { $concat: ['$$value', '$$this'] }
}
},
to: 'double',
onError: 0
}
}
}
}
]);
Kết quả
{ "_id": ..., "data": 456778 }
{ "_id": ..., "data": 1766476534 }
{ "_id": ..., "data": 8899322135875.5 }
{ "_id": ..., "data": 1533.07 }
Luồng xử lý: split bằng ',' → reduce concat các phần → convert sang double. onError: 0 xử lý giá trị không chuyển được.