2

在 Mongodb v2.2 中,当我尝试将一个像这样的简单 json 文档文件从我的 .json 文件导入到一个空集合中时,我导入了 13 个对象。这就是我正在做的事情。

这是数据(我缩短了字段名称以保护数据):

[
{ 
    "date" : ISODate("2012-08-01T00:00:00Z"), 
    "start" : ISODate("2012-08-01T00:00:00Z"), 
    "xxx" : 1, 
    "yyt" : 5, 
    "p" : 6, 
    "aam" : 20, 
    "dame" : "denon", 
    "33" : 10, 
    "xxt" : 8, 
    "col" : 3, 
    "rr" : [   
        { "name" : "Plugin 1", "count" : 1 },  
        { "name" : "Plugin 2", "count" : 1 },  
        { "name" : "Plugin 3", "count" : 1 }   
    ], 
    "xkx" : { "y" : 0, "n" : 1 }, 
    "r" : { "y" : 0, "n" : 1 }, 
    "po" : { "y" : 0, "n" : 1 }, 
    "pge" : { "posts" : 0, "pages" : 1 }, 
    "pol" : { "y" : 0, "n" : 1 }, 
    "lic" : { "y" : 0, "n" : 1 }, 
    "count" : 30, 
    "tx" : [ 
        { "zone" : -7, "count" : 1 } 
    ], 
    "yp" : "daily", 
    "ons" : [ 
        { "version" : "9.6.8", "count" : 1 } 
    ], 
    "ions" : [
        { "version" : "10.0.3", "count" : 1 } 
    ] 
}
]

使用此命令:

mongoimport --db development_report --collection xxx --username xxx --password xxx --file /Users/Alex/Desktop/daily2.json --type json --jsonArray --stopOnError --journal

我得到了这个奇怪的回应:

Mon Sep  3 12:09:12 imported 13 objects

这 13 个新文档最终出现在集合中,而不是一个:

{ "_id" : ObjectId("5044114815e24c08bcdc988e") }
{ "_id" : ObjectId("5044114815e24c08bcdc988f"), "name" : "Plugin 1", "count" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9890"), "name" : "Plugin 2", "count" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9891"), "name" : "Plugin 3", "count" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9892"), "y" : 0, "n" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9893"), "y" : 0, "n" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9894"), "y" : 0, "n" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9895"), "posts" : 0, "pages" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9896"), "y" : 0, "n" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9897"), "y" : 0, "n" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9898"), "zone" : -7, "count" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc9899"), "version" : "9.6.8", "count" : 1 }
{ "_id" : ObjectId("5044114815e24c08bcdc989a"), "version" : "10.0.3", "count" : 1 }

我究竟做错了什么?

4

3 回答 3

5

您遇到的问题是文档开头的两个 ISODate 字段。

JSON 没有任何“日期”类型,因此它不处理文档中的 ISODate 字段。您需要像这样转换这些:

[
{ 
"date" : { "$date" : 1343779200000 }, 
"start" : { "$date" : 1343779200000 },
...

您的导入将起作用。

出现这种情况的原因是 MongoDB 处理的类型比 JSON 规范中可用的类型多。您可以在文档中查看更多信息。还有一张公开票让 MongoImport 处理 MongoDB 在这里所做的所有格式,更多细节在这里

于 2012-09-03T04:06:15.963 回答
1

这真是令人沮丧;我无法使用导入工具快速到达任何地方,因此我使用load()mongo 客户端中的函数来加载插入我的记录的脚本。

> load('/Users/Alex/Desktop/daily.json');

我显然不得不修改 json 文件以包含如下插入命令:

>db.mycollection.insert(
    { DOCUMENT 1 },
    ...
    { DOCUMENT N }
);
于 2012-09-03T04:04:18.263 回答
0

这真的很晚,但如果它可以帮助其他人 - 你不应该传递 JSON 数组。只需每行列出 1 个 JSON 文档,每行将创建一个单独的文档。下面的文件将插入 2 个文档:

{ "date" : { "$date": 1354320000000 }, "xxx" : 1, "yyt" : 5, ... }
{ "date" : { "$date": 1354320000000 }, "xxx" : 2, "yyt" : 6, ... }
于 2013-04-29T13:22:03.140 回答