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" //... }
完了しました。