mongoimport не может импортировать $ numberLong
Коллекция с данными типаNumberLong следующим образом:
> db.hc_whois.findOne();
{
"_id" : NumberLong(3000001),
"startIpInLong" : NumberLong(1543503872),
"endIpInLong" : NumberLong(1544552447),
"name" : "ap-net-1",
//...
}
Экспортируйте его сmongoexport:
сервер1
$ 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, а поиск по длинному значению больше не выполняется.
> 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 для экспорта данных, и попробуйте импортировать данные на server2, где установленMongoDB v2.4.3.
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"
//...
}
Готово.