Если у вас есть данные в формате CSV
, то я бы порекомендовал создать простой импортер.Вы можете использовать NeoCSV
, а затем сохранить его через Pharo.Я предполагаю, что вы знаете, как настроить хранилище Mongo (@workspace):
| repository |
repository := VOMongoRepository
host: VOMongoRepository defaultHost
database: 'MyMongoDb'.
VORepository setRepository: repository.
Сначала создайте два метода класса для Voyage:
Kid class >> isVoyageRoot
^ true "instances of this object will be root"
Kid class >> voyageCollectionName
^ 'Kids' "The collection name in MongoDB"
Класс Kid должен иметь firstName(:)
, surname(:)
, age(:)
аксессоры и переменные экземпляра с одинаковыми именами.
Затем просто получите чтение из CSV
и затем сохраните его в mongoDB
:
| personalInformation readData columnName columnData aKid |
"init variable"
personalInformation := OrderedDictionary new.
"emulate CSV reading"
readData := (NeoCSVReader on: 'firstName, surname, age\John, Smith, 5' withCRs readStream) upToEnd.
columnName := readData first.
columnData := readData second.
"Repeat for as many number of columns you may have"
1 to: columnName size do: [ :index |
personalInformation at: (columnName at: index) put: (columnData at: index)
].
aKid := Kid new.
"Storing Kid object information"
personalInformation keysAndValuesDo: [ :key :value |
aKid perform: (key asString,$:) asSymbol with: value "For every column store the information into a Kid object (you have to have accessors for that)"
].
aKid save "Saving into mongoDB"
Это только для того, чтобы дать вам приблизительное представление
Для запроса в вашем MongoDB выполните:
db.Kids.find()
Вы должны увидеть сохраненную информацию.
Отказ от ответственности: Даже если код должен быть в порядке, у меня не было времени, чтобы проверить его на mongoDB.