2011-01-13 9 views
26

He encontrado una colección en una de nuestras bases de datos MongoDB con el nombre my.collection.MongoDB Shell: ¿acceso a colección con punto en el nombre?

¿Hay alguna manera de acceder a esta colección desde el shell MongoDB, a pesar de tener un punto en el nombre?

> db.my.collection.findOne(); 
null 

Estoy bastante seguro de que eso no es correcto.

+0

Funciona para map/reduce colección que tiene un punto en su nombre, por ejemplo, 'tmp.mr.mapreduce_1294927200_2363' – Nekresh

Respuesta

2

Tu código es correcto. Si devuelve null, significa que la colección está vacía.

+0

Con un problema similar, encontré que mongo shell daba el error" SyntaxError: token inesperado ILEGAL "... Encontré que la respuesta de Laura a continuación es la forma de acceder a una colección con un punto en el nombre. – Kickaha

76

probar este lugar:

db["my.collection"].findOne(); 

se encuentra con el mismo problema con guiones o cualquier otro nombre que no coincide con el [a-zA-Z _ $] [0-9a-zA-Z_ $ ]

Esta limitación viene de nombre válido para las propiedades del objeto javascript.

+5

Creo que esta debería ser la respuesta aceptada porque explica la sintaxis y ofrece una solución útil. – jschreiner

+0

de acuerdo, esta debería ser la respuesta aceptada. – rabashani

10

si el nombre de la colección es "my.collection"

db.my.collection.findOne(); // OK
null

si el nombre de la colección es "my.1.collection"

db.my.1.collection.findOne(); // Not OK
SyntaxError: missing ; before statement

Fix:

db["my.1.collection"].findOne(); // Now is OK
null

5

Otro método infalible es:

db.getCollection("_SCHEMA").find() 

Mientras que en el caso de un subrayado en el nombre, todavía causar un error con la respuesta @Laura:

> db["_SCHEMA"].find() 
2016-07-18T17:44:16.948+0200 E QUERY [thread1] TypeError: db._SCHEMA is undefined : 
@(shell):1:1 
+0

Esta debería ser la respuesta. Nada más funcionó para una colección llamada "1" en el shell. – pferrel

Cuestiones relacionadas