Mongoimport имеет очень ограниченные возможности, и в таких ситуациях официальная рекомендация состоит в том, чтобы написать собственный скрипт, который анализирует ваш файл csv за строкой и создает документы точно так, как вы хотели бы их представить.
для того, чтобы геопространственном индекс будет создан, информация о местоположении должна храниться в том же ключе, как описано в разделе «Некоторые примеры:» раздел в верхней части документации геопространственной Indexing: http://www.mongodb.org/display/DOCS/Geospatial+Indexing
ИМПОРТИРУЯ данные непосредственно из файла .csv создает документы, как это:
doc1.csv:
place, lat, lon
Place 1,73.992964,40.739037
$ ./mongoimport -d test -c a --type csv --headerline --file doc1.csv
> db.a.find()
{ "_id" : ObjectId("4f7602d70c873ff911798fd3"), "place" : "Place 1", "lat" : 73.992964, "lon" : 40.739037 }
к сожалению, это не представляется возможным создать геопространственной индекс документа выше.
В качестве эксперимента я попытался импортировать CSV-файл с данными во втором формате, который вы описали, без успеха.
doc2.csv:
place, loc
Place1,[-73.992964,40.739037]
$ ./mongoimport -d test -c b --type csv --headerline --file doc2.csv
> db.b.find()
{ "_id" : ObjectId("4f7602e40c873ff911798fd4"), "place" : "Place1", "loc" : "[-73.992964", "field2" : "40.739037]" }
В качестве дополнительного эксперимента я изменил .csv документ в формате JSON, и импортировать это, и это, казалось, работало.
doc3.json:
{name:"Place1" , loc:[-73.992964,40.739037]}
$ ./mongoimport -d test -c c --type json --file doc3.json
> db.c.find()
{ "_id" : ObjectId("4f7604570c873ff911798fd5"), "name" : "Place1", "loc" : [ -73.992964, 40.739037 ] }
Однако, если вы пишете сценарий для преобразования всех ваших .csv файлов в формате .json, вы, вероятно, лучше писать специальный скрипт, чтобы импортировать CSV-файлы непосредственно в вашу коллекцию вместо этого.
Большое спасибо за такой подробный экзамен.Предварительная обработка была тем, как я возглавлял, но я просто хотел удостовериться, что я не пропустил что-то в mongoimport. – Nick