mongoimportを使用してCSVファイルからMongodbのObjectIdをインポートするのに苦労しています。
考えられるすべての組み合わせとエスケープメソッドを試しましたが、CSVからObjectIdを正しくインポートできません。
まず、MongoDBからCSVにエクスポートしたものを正確にインポートしてみました。MongoDB2.2.1を使用しています。
2つのコレクションを作成し、あるドキュメントの_idを別のドキュメントで参照しました。
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"})
次に、シェルでmongoexportコマンドを使用しました。
mongoexport -h localhost:3002 -d yourdb -c classes --csv -f student_id,name > export.txt
結果のCSVは次のようになります。
student_id,name
ObjectID(5143af326d44e1ceb372121d),"II-4"
次に、次を使用して結果のCSVをインポートしました。
mongoimport -h localhost:3002 -d yourdb -c class --type csv --file export.txt --headerline
クエリクラスコレクションは次を返すようになりました。
db.class.find()
{ "_id" : ObjectId("5143afc66d44e1ceb372121e"), "student_id" : ObjectId("5143af326d44e1ceb372121d"), "name" : "II-4" }
{ "_id" : ObjectId("5143b44788df173ba096550e"), "student_id" : "ObjectID(5143af326d44e1ceb372121d)", "name" : "II-4" }
お気づきのように、2番目のドキュメントのstudent_idフィールドは実際には文字列であり、MongoDBObjectIdではありません。
何かが間違っているか、Mongoが独自にエクスポートしたCSVをインポートできませんか?