MongoDB Shell - доступ к коллекции с точкой в ​​имени? - PullRequest
29 голосов
/ 13 января 2011

Я нашел коллекцию в одной из наших баз данных MongoDB с именем my.collection.

Есть ли способ получить доступ к этой коллекции из оболочки MongoDB, несмотря на то, что в названии есть точка?

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

Я уверен, что это не правильно.

Ответы [ 4 ]

86 голосов
/ 13 сентября 2011

попробуйте вместо этого:

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

вы столкнулись с той же проблемой с дефисами или любым другим именем, которое не совпадает с [a-zA-Z _ $] [0-9a-zA-Z_ $]

Это ограничение исходит из допустимого имени для свойств объекта javascript.

12 голосов
/ 03 января 2013

если имя коллекции «my.collection»

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

, если имя коллекции "my.1.collection"

db.my.1.collection.findOne ();// Не в порядке
SyntaxError: missing;перед оператором

Исправлено:

db ["my.1.collection"]. findOne ();// Теперь все в порядке
null

7 голосов
/ 18 июля 2016

Еще один надежный метод:

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

Хотя в имени подчеркивания в имени все равно возникает ошибка с ответом @Laura:

> db["_SCHEMA"].find()
2016-07-18T17:44:16.948+0200 E QUERY    [thread1] TypeError: db._SCHEMA is undefined :
@(shell):1:1
2 голосов
/ 13 января 2011

Ваш код правильный.Если он возвращает ноль, это означает, что коллекция пуста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...