2011-01-13 4 views
26

J'ai trouvé une collection dans l'une de nos bases de données MongoDB sous le nom my.collection.MongoDB Shell - collection d'accès avec période dans le nom?

Existe-t-il un moyen d'accéder à cette collection à partir du shell MongoDB, malgré le fait qu'il y ait un point dans le nom?

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

Je suis assez sûr que ce n'est pas correct.

+0

Il travaille pour map/reduce collection qui ont un point en leur nom, par exemple 'tmp.mr.mapreduce_1294927200_2363' – Nekresh

Répondre

2

Votre code est correct. Si elle renvoie null, cela signifie que la collection est vide.

+0

Avec un problème similaire, j'ai trouvé mongo shell donnant l'erreur" SyntaxError: unexpected token ILLEGAL "... J'ai trouvé la réponse de Laura ci-dessous est la façon d'accéder à une collection avec une période dans le nom. – Kickaha

76

essayer ceci:

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

vous rencontrez le même problème avec des traits d'union ou tout autre nom qui ne correspond pas [a-zA-Z _ $] [0-9a-zA-Z_ $ ]

Cette limitation provient d'un nom valide pour les propriétés de l'objet javascript.

+5

Je crois que cela devrait être la réponse acceptée, car elle explique la syntaxe et donne une solution de contournement utile. – jschreiner

+0

d'accord, cela devrait être la réponse acceptée. – rabashani

10

si le nom de la collection est "my.collection"

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

si le nom de la collection est "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

Une autre méthode à toute épreuve est:

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

Alors que dans le cas d'un trait de soulignement au nom, toujours provoquer une erreur avec la réponse @Laura:

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

Cela devrait être la réponse. Rien d'autre n'a fonctionné pour une collection nommée "1" dans le shell. – pferrel

Questions connexes