update tutorial learn examples español mongodb meteor

mongodb - tutorial - ¿Cómo usar mongoimport con mi base de datos de aplicaciones de meteoritos?



meteor tutorial español (5)

Ahora uso mongochef para mover datos entre bases de datos. Es muy fácil: solo se conecta a cada base de datos (generalmente, db local y remota), luego puede copiar y pegar documentos en todas las colecciones. Mucho más fácil que el enfoque de línea de comandos.

Puedo usar mongoimport para importar datos CSV a una base de datos mongodb que no sea meteorito, pero no puedo averiguar cómo importar un CSV a mi base de datos de aplicaciones de meteoros.

Aprendí cómo ejecutar el shell mongo para mi aplicación de meteor mongo ( meteor mongo ) pero no puedo ejecutar mongoimport desde el shell.

La mongodb docs para mongoimport dice

En este ejemplo, mongoimport importa los datos con formato csv en /opt/backups/contacts.csv a los contactos de la colección en la base de datos de usuarios en la instancia de MongoDB que se ejecuta en el puerto localhost numerado 27017.

mongoimport --db usuarios - contactos de recolección --tipo csv --file /opt/backups/contacts.csv

Pero cuando ejecuto mongod , inicio mi aplicación meteorológica y ejecuto mongoimport se importa a mi base de datos de test , no a mi base de datos de aplicación.

Leí este comentario de stackoverflow post:

Use mongoexport para volcar sus colecciones individualmente, luego mongoimport para importar los archivos en el db denominado meteor en la instancia de meteor mongodb. La instancia de meteor mongo se ejecuta en el puerto 3002 con bind_address 127.0.0.1, y los archivos de datos se encuentran en el subdirectorio del proyecto meteorito .meteor / local / db

Pero no entiendo cómo conectarme a esa instancia o cómo mongoimport con el comando mongoimport .


NOTA: El método anterior NO funcionó en el puerto 3002 para mí, pero funcionó en el puerto 3001.

Para importar un archivo TSV externo en una base de datos de meteoritos, inicié la aplicación de meteoros que necesitaba los datos de TSV. Esto también lanza el servicio meteor mongodb (en mi caso en host: localhost: 3001), luego abrí una terminal en OSX y, a través de la terminal, navegé a una carpeta bin del paquete mongodb, que descargué anteriormente para obtener el binario, "Mongoimport". Una vez en la carpeta bin del paquete mongodb, a continuación, en el símbolo del sistema, escribí lo siguiente a continuación (algunas opciones de cambio variarán ... pero --host, --localhost y --db switch / valores deben ser como se muestran):

$ ./mongoimport --host localhost:3001 --db meteor --collection datarefs --type tsv --drop --headerline --file /PathToFile/DataRefs.tsv

Después de pulsar enter, mongoimport echo''d importación exitosa en el terminal. Una vez hecho esto, pude navegar a la aplicación de meteoros a través de la terminal y lanzar meteor mongo: $ meteor mongo ... y ver la colección importada, "datarefs" en la base de datos de meteoros para esta aplicación.

$ meteor mongo ... ... meteor:PRIMARY> show collections datarefs system.indexes meteor:PRIMARY>


Parece que acabo de responder a tu comentario en la maravillosa respuesta de Rahuls . De todos modos, descargue mongodb de mongodb.org para su sistema operativo (o un administrador de paquetes como macports) y use la herramienta provista en la carpeta bin. mongoimport no es un comando en el shell mongo, es un ejecutable que se ejecuta por separado.

Además, no olvide colocar el puerto (normalmente 3001 si está ejecutando su instancia de meteorito en 3000 ), también la base de datos suele ser meteorito y no usuarios cuando lo ejecuta

mongoimport -h localhost:3001 --db meteor --collection contacts --type csv --file /opt/backups/contacts.csv


Primero crea una colección en una aplicación de meteoros como esta.

Students = new Meteor.Collection("students");

A continuación, agregue un valor ficticio para asegurarse de que la colección inicializada por meteoros

Students.insert({"name":"first"}); En algún evento de clic, por ejemplo. Para comprobar usar esto

meteor:PRIMARY> show collections students system.indexes

Luego importa. mongoimport -h localhost:3001 -d meteor -c students < students.json De alguna manera, meteor no reconoce las nuevas colecciones importadas que necesita, ya sea que las elimine, agregue algún valor ficticio, vuelva a importarlas o cree una nueva e inicialícela con valor ficticio y luego importe. Puede haber un error de enlace porque las colecciones se muestran directamente en minimongo.

Gracias a Akshat y Tom Kyler


Un pequeño script (plantilla) para ejecutar mongoimport a xxx.meteor.com

#!/bin/sh # Script to import csvfile to meteor application deployed to free meteor.com hosting. # Make sure your versions of mongo match with the metor.com mongo versions. # As Jan 2016 it seems to be 3.x something. Tested with mongoimport 3.12. if [ $# -eq 0 ] then echo "usage: $0 xxx.meteor.com collection filename.csv" exit 1 fi URL=$1 COLLECTION=$2 FILE=$3 echo Connecting to $URL, please stand by.... collection=$COLLECTION file=$FILE PUPMS=`meteor mongo --url $URL | sed ''s/mongodb:///// -u /'' | sed ''s/:/ -p /'' | sed ''s/@/ -h /'' | sed ''s//// -d /''` mongoimport -v $PUPMS --type csv --headerline --collection $COLLECTION --file $FILE