版本3.4中的Mongodb支持NumberDecimal
我有MongoDB服务器版本:3.4.1,但是当我执行mongoimport shell命令时,会得到一个错误:
失败:错误处理文档#7:文字NumberInt或NumberLong中的无效字符'D‘(期望'I’或'L')
我的儿子:
{"c":"7E474601-B511-4AD9-B2B8-7E61807F9673","n":"n1","v":NumberDecimal("95")}正常插入执行ok,所以这是mongoimort问题。
db.aaa.insert({"c":"7E474601-B511-4AD9-B2B8-7E61807F9673","n":"n1","v":NumberDecimal("95")})
WriteResult({ "nInserted" : 1 })为什么会这样呢?你能帮帮我吗?
发布于 2017-01-26 20:44:20
找出正确的扩展json格式的一个技巧是在集合中使用mongoexport实用程序来查看MongoDB本身是如何发布json的。
在这种情况下,以下内容应该有效:
{"c":"7E474601-B511-4AD9-B2B8-7E61807F9673","n":"n1","v":{"$numberDecimal":"95"}}
我用3.4.1服务器版本对mongoimport进行了测试,它正确地导入了numberDecimal。
发布于 2017-01-26 19:46:04
NumberDecimal("95")不是有效的JSON表示形式。它应该是
{"c":"7E474601-B511-4AD9-B2B8-7E61807F9673","n":"n1","v":95}它适用于mongo,因为shell是一个javascript解释器,它将NumberDecimal视为有效的数据类型。
如果需要NumberDecimal数据类型,则需要使用驱动程序或mongo。
在bash中,您可以运行以下简单脚本:
for i in `cat aaa.json`
do
mongo --quiet --eval "db.aaa.insert($i)"
done请注意,这是逐行插入,效率不高。
https://stackoverflow.com/questions/41881518
复制相似问题