mongoimportは$ numberLongをインポートできません

mongoimportは$ numberLongをインポートできません

次のようにNumberLong型データを含むコレクション:

> db.hc_whois.findOne();
{
       "_id" : NumberLong(3000001),
       "startIpInLong" : NumberLong(1543503872),
       "endIpInLong" : NumberLong(1544552447),
       "name" : "ap-net-1",
       //...
 }

mongoexportでエクスポートします:

server1

$ mongoexport -d mydb -c hc_whois -o whois.json

whois.json

{
  "_id" : { "$numberLong" : "3000001" },
  "startIpInLong" : { "$numberLong" : "1543503872" },
  "endIpInLong" : { "$numberLong" : "1544552447"
}

1. 問題

エクスポートされたデータwhois.jsonを別のサーバーにコピーし、mongoexportでインポートします。

server2

$ mongoimport -d mydb -c hc_whois --file whois.json

インポートされたデータは奇妙に見え、余分な$numberLongが挿入され、long値は検索できなくなります。

> db.hc_whois.findOne();
{
        "_id" : {
                "$numberLong" : "3000001"
        },
        "startIpInLong" : {
                "$numberLong" : "1543503872"
        },
        "endIpInLong" : {
                "$numberLong" : "1544552447"
        },
        "name" : "ap-net-1",
        //...
}

mongoimport$numberLongを長い値に変換しなかったのはなぜですか?

2. 溶液

簡単なチェックの後、server1がMongoDB v2.6.4を使用してデータをエクスポートしていることを確認し、MongoDB v2.4.3がインストールされているserver2にデータをインポートしてみます。

To fix it、server1とserver2の両方が同じMongoDBバージョンを使用していることを確認してください。エクスポートされた$numberLong値はバージョン2.6.xでのみサポートされているようです。

1. このガイドのupgrade MongoDB to 2.6を参照してください。簡単です。MongoDBプロセスを停止し、$mongoinフォルダーを最新のものに置き換えるだけです。

2. server2をMongoDB 2.6にアップグレードしたら、もう一度インポートしてみてください。

server2

$ mongoimport -d mydb -c hc_whois --file whois.json
> db.hc_whois.findOne();
{
        "_id" : 3000001,
        "startIpInLong" : 1543503872,
        "endIpInLong" : 1544552447,
        "name" : "ap-net-1"
        //...
}

完了しました。

Related