mongoimport kann $ numberLong nicht importieren

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.

Related