Как импортировать json в MongoDB с помощью Мангуста
у меня есть несколько проблем с этим, что то, что делает его сложным, так...
Я использую Мангуст и MongoLab, я могу хранить данные и извлекать их просто отлично, но мне нужна система, которая позволяет мне делать базовое семя базы данных.
у меня есть схемы, созданные для коллекций, но ни одна не выполняется, потому что нет данных, поэтому я не могу запустить обычный mongoimport, поскольку коллекция еще не создана.
Я хочу добавить что-то на мой сервер узлов таким образом, если коллекция не существует или пуста, она загружает схему для коллекции, а затем вставляет json для исходных данных.
Так у меня есть это...
var Club = require('./schemas/Club');
Я обычно использую клуба.найти или клуб.сохраните etc, это работает нормально.
Я хочу просто запустить сохранение против массива объектов в коллекцию Club, которую ему нужно создать.
Я посмотрел в Мангуст-приспособление, но его не обновляли годами, и, вероятно, есть способ делать это без необходимости дополнительного кода, так как у меня есть определенная схема и массив JSON готов.
это событие успеха, которое я перечислил, когда я думаю, что хочу сделать проверку и импорт.
mongoose.connection.on('open', function () {
console.log('mongoose.connection.opened');
});
кроме того, чтобы рассмотреть, если бы я хотел создать две коллекции, и когда он генерирует ObjectId() для элементов в первой коллекции, я могу представить, что хочу использовать их во второй коллекции в качестве ссылки.
просто предположим, что клубные объекты имеют только один свойство string на данный момент.
// contents of data/club.json
[
{ 'name' : 'Barcelona' },
{ 'name' : 'Real Madrid' },
{ 'name' : 'Valencia' }
]
любая помощь очень ценится
2 ответов
если я хорошо понимаю, все, что вам нужно, это загрузить документ JSON в вашу коллекцию MongoDB из Mongoose. Учитывая, что ваша модель называется Club
, вы можете получить доступ к методам raw driver через Club.collection
. И использовать insertMany
для достижения того, что вы хотите.
вот отдельный пример (интересный материал в конце):
> var mongoose = require('mongoose')
> var assert = require('assert')
> mongoose.connect('mongodb://localhost/test');
> var Schema = mongoose.Schema
> var clubSchema = new Schema({
... name: String,
... })
> var Club = mongoose.model('Club', clubSchema)
// Now, the interesting part:
> data = [
... { 'name' : 'Barcelona' },
... { 'name' : 'Real Madrid' },
... { 'name' : 'Valencia' }
... ]
> Club.collection.insertMany(data, function(err,r) {
... assert.equal(null, err);
... assert.equal(3, r.insertedCount);
...
... db.close();
... })
и проверьте из оболочки Mongo:
> db.clubs.find()
{ "_id" : ObjectId("5574b464b680174d79e37601"), "name" : "Barcelona" }
{ "_id" : ObjectId("5574b464b680174d79e37602"), "name" : "Real Madrid" }
{ "_id" : ObjectId("5574b464b680174d79e37603"), "name" : "Valencia" }
иногда скрипты могут помочь:
for filename in *; do mongoimport -d mydb -c $filename --jsonArray done
Читайте также: массовый импорт MongoDB с помощью mongoimport из папки Windows