2

Mongodb v2.2では、このような1つの単純な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の新しいドキュメントは、1つではなくコレクションに含まれることになります。

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

問題は、ドキュメントの先頭にある2つの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行に1つのJSONドキュメントをリストするだけで、各行に個別のドキュメントが作成されます。以下のファイルは2つのドキュメントを挿入します:

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