首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoimport拒绝NumberDecimal类型

mongoimport拒绝NumberDecimal类型
EN

Stack Overflow用户
提问于 2017-01-26 19:34:59
回答 2查看 1.4K关注 0票数 2

版本3.4中的Mongodb支持NumberDecimal

我有MongoDB服务器版本:3.4.1,但是当我执行mongoimport shell命令时,会得到一个错误:

失败:错误处理文档#7:文字NumberInt或NumberLong中的无效字符'D‘(期望'I’或'L')

我的儿子:

代码语言:javascript
复制
{"c":"7E474601-B511-4AD9-B2B8-7E61807F9673","n":"n1","v":NumberDecimal("95")}

正常插入执行ok,所以这是mongoimort问题。

代码语言:javascript
复制
db.aaa.insert({"c":"7E474601-B511-4AD9-B2B8-7E61807F9673","n":"n1","v":NumberDecimal("95")})
WriteResult({ "nInserted" : 1 })

为什么会这样呢?你能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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。

票数 4
EN

Stack Overflow用户

发布于 2017-01-26 19:46:04

NumberDecimal("95")不是有效的JSON表示形式。它应该是

代码语言:javascript
复制
{"c":"7E474601-B511-4AD9-B2B8-7E61807F9673","n":"n1","v":95}

它适用于mongo,因为shell是一个javascript解释器,它将NumberDecimal视为有效的数据类型。

如果需要NumberDecimal数据类型,则需要使用驱动程序或mongo。

在bash中,您可以运行以下简单脚本:

代码语言:javascript
复制
for i in `cat aaa.json`
do
 mongo --quiet --eval "db.aaa.insert($i)"
done

请注意,这是逐行插入,效率不高。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41881518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档