Non riesco a importare l'ObjectId di Mongodb da un file CSV utilizzando mongoimport:Come importare ObjectDd Mongodb dal file CSV usando mongoimport?
Ho provato tutte le combinazioni e il metodo di escape che potevo pensare ma non posso importare ObjectId correttamente da CSV.
Per prima cosa ho provato a importare esattamente ciò che viene esportato da MongoDB a CSV. Sto usando MongoDB 2.2.1.
Ho appena creato due collezioni e referenziata _id un documento in un altro documento:
use yourdb
db.createCollection("student")
db.createCollection("class")
db.student.insert({"name":"Peter"})
db.student.find() returns { "_id" : ObjectId("5143af326d44e1ceb372121d"), "name" : "Peter" }
db.class.insert({"student_id": ObjectId("5143af326d44e1ceb372121d"),"name":"II-4"})
Poi ho usato mongoexport comando nella shell:
mongoexport -h localhost:3002 -d yourdb -c classes --csv -f student_id,name > export.txt
risultante CSV si presenta così:
student_id,name
ObjectID(5143af326d44e1ceb372121d),"II-4"
Quindi ho importato il CSV risultante utilizzando:
mongoimport -h localhost:3002 -d yourdb -c class --type csv --file export.txt --headerline
quering classe raccolta ora ritorna:
db.class.find()
{ "_id" : ObjectId("5143afc66d44e1ceb372121e"), "student_id" : ObjectId("5143af326d44e1ceb372121d"), "name" : "II-4" }
{ "_id" : ObjectId("5143b44788df173ba096550e"), "student_id" : "ObjectID(5143af326d44e1ceb372121d)", "name" : "II-4" }
Come si può notare campo student_id nel secondo documento è in realtà una stringa e non MongoDB ObjectId.
Mi sbaglio su qualcosa o Mongo non può importare il proprio CSV esportato ??
Cosa ti aspetti che succeda e cosa sta succedendo invece? Stai importando di nuovo nella stessa collezione nel tuo esempio che non è chiaro. – JohnnyHK
Sto cercando di importare ObjectID di MongoDB da csv e sto ottenendo solo le stringhe importate in MongoDB. Ho provato a importare l'esportazione csv di MongoDB ma questo non ha portato ad ObjectIDs. Sembra che nessuno abbia provato a importare il campo ObjectID da un file CSV usando mongoimport? – vladimirp
Ha funzionato bene quando ho provato questo. Il tuo vero file test.csv ha una riga di intestazione che contiene i nomi dei campi? Il tuo esempio CSV non lo mostra. – JohnnyHK