2012-09-03 35 views
2

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

这是数据(我已经缩短了字段名来保护数据):

[ 
{ 
    "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 

我得到这个weired响应:

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 } 

我在做什么错?

回答

0

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

{ "date" : { "$date": 1354320000000 }, "xxx" : 1, "yyt" : 5, ... } 
{ "date" : { "$date": 1354320000000 }, "xxx" : 2, "yyt" : 6, ... } 
1

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

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

我显然不得不修改JSON文件,包括像这样的INSERT命令:

>db.mycollection.insert(
    { DOCUMENT 1 }, 
    ... 
    { DOCUMENT N } 
); 
+0

对'mongoimport'不支持'ISODate'的很好的解决方法。但是,您必须通过“插入”一个对象或一个数组 - 然后它对我来说非常合适。 – tobek

5

您所遇到的问题是你必须在你的文档的开头两个ISODate领域。

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

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

而且您的导入工作正常。

这是因为MongoDB处理的类型多于JSON规范中可用的类型。您可以在documentation中看到更多信息。还有一张门票可以让MongoImport处理所有MongoDB格式的文件here和更多详细信息here