De 32 bits mongo 2.0.1 en un equipo con windows XP

//script filename: test.js  (one line shell script file to store a person)
db.cTest.save({Name: "Fred", Age:21});

ejecutar en contra de la base de datos dbTest introduciendo los siguientes 2 comandos de la shell:

    > use dbTest
    switched to dbTest
    > load("test.js")

Tan lejos, tan bueno.

Pero si trato e incluyen el «uso» de la instrucción en la secuencia de comandos de falla:

//script filename: test.js  (including "use" statement)
use dbTest;
db.cTest.save({Name: "Fred", Age:21});

falla con el mensaje de error siguiente:

    > load("test.js")
    SyntaxError: missing ; before statement
    Mon Dec 19 11:56:31: Error: error loading js file temp.js (shell):1

La adición o eliminación de un punto y coma test.js no parece importar.

Entonces, ¿cómo poner un «uso» de la directiva en un mongo shell script?

InformationsquelleAutor tpascale | 2011-12-19

3 Comentarios

  1. 19

    http://www.mongodb.org/display/DOCS/Scripting+las+shell

    uso dbname

    Este comando no funciona en modo de secuencias de comandos. En su lugar será necesario definir explícitamente la base de datos en la conexión (/dbname en el ejemplo de arriba).

    Alternativamente, también puede crear una conexión dentro de la secuencia de comandos:

    db2 = connect(«servidor:27017/otherdbname»)

    • La respuesta es la correcta. Para una visión general de la diferencia entre interactivo y scripts JS: docs.mongodb.com/manual/tutorial/…
    • uso db_name, que se utiliza para el trabajo, ahora en las versiones más recientes tenemos que conectar con el nombre de base como se mencionó anteriormente.
  2. 52

    En un mongo secuencia de comandos que puede utilizar el db.getSiblingDB('new_db_name') para obtener una referencia de una nueva base de datos. Así, no es obligatorio dar el nombre de base de datos en la línea de comandos. Usted puede utilizar el script.js:

    db = db.getSiblingDB('new_db_name');
    print(db);
    
    //the rest of your code for database "new_db_name"

    y la salida de este script es (se invoca con mongo script.js):

    MongoDB shell version: 2.2.2
    connecting to: test
    sag
    • Gracias! Super útil
    • Esto es perfecto para cuando quieres escribir una rápida secuencia de comandos o la función de en el mongo shell. La clave de la línea de interruptor de bases de datos db = db.getSiblingDB(‘new_db_name’);
  3. 16

    Bien, todavía es lamentable que «load(‘file.js’)» y «mongo file.js» en realidad no utilizar el mismo intérprete de comandos como el interactivo mongo shell. La apertura de la conexión de forma explícita en la secuencia de comandos es potencialmente una violación del principio SECO porque mongo ya se sabe que la información. Lo que hace el trabajo, sin embargo, es de tuberías el archivo en mongo en lugar de pasar su nombre en la línea de comandos:

    mongo <file.js
    • esto funciona como se esperaba, gracias
    • El ‘<‘ operador se reserva para uso futuro.

Dejar respuesta

Please enter your comment!
Please enter your name here