mongoimport kann $ numberLong nicht importieren
Eine Sammlung mit den Typdaten vonNumberLongwie folgt:
> db.hc_whois.findOne();
{
"_id" : NumberLong(3000001),
"startIpInLong" : NumberLong(1543503872),
"endIpInLong" : NumberLong(1544552447),
"name" : "ap-net-1",
//...
}
Exportieren Sie es mitmongoexport:
Server 1
$ mongoexport -d mydb -c hc_whois -o whois.json
whois.json
{
"_id" : { "$numberLong" : "3000001" },
"startIpInLong" : { "$numberLong" : "1543503872" },
"endIpInLong" : { "$numberLong" : "1544552447"
}
1. Problem
Kopieren Sie die exportierten Datenwhois.json auf einen anderen Server und importieren Sie sie mitmongoexport.
server2
$ mongoimport -d mydb -c hc_whois --file whois.json
Die importierten Daten sehen seltsam aus, ein zusätzliches$numberLong wird eingefügt und der lange Wert kann nicht mehr suchen.
> db.hc_whois.findOne();
{
"_id" : {
"$numberLong" : "3000001"
},
"startIpInLong" : {
"$numberLong" : "1543503872"
},
"endIpInLong" : {
"$numberLong" : "1544552447"
},
"name" : "ap-net-1",
//...
}
Warum habenmongoimport die$numberLong nicht in einen langen Wert umgewandelt?
2. Lösung
Stellen Sie nach einer kurzen Überprüfung fest, dass Server1MongoDB v2.6.4 zum Exportieren der Daten verwendet, und versuchen Sie, die Daten auf einen Server2 zu importieren, auf demMongoDB v2.4.3 installiert ist.
To fix it, stellen Sie sicher, dass sowohl Server1 als auch Server2 dieselbe MongoDB-Version verwenden. Der exportierte Wert von$numberLongwird nur in Version 2.6.x unterstützt.
1. Informationen zuupgrade MongoDB to 2.6finden Sie in diesem Handbuch. Stoppen Sie einfach den MongoDB-Prozess und ersetzen Sie den Ordner$mongoindurch den neuesten.
2. Versuchen Sie nach dem Upgrade von Server2 auf MongoDB 2.6, ihn erneut zu importieren.
server2
$ mongoimport -d mydb -c hc_whois --file whois.json
> db.hc_whois.findOne();
{
"_id" : 3000001,
"startIpInLong" : 1543503872,
"endIpInLong" : 1544552447,
"name" : "ap-net-1"
//...
}
Erledigt.