Подтвердить что ты не робот

MongoDB Shell - коллекция доступа с периодом по имени?

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

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

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

Я уверен, что это неверно.

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

Ответ 3

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

db.my.collection.findOne();//ОК
нуль

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

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

Fix:

дБ [ "my.1.collection" ] findOne().//Теперь все в порядке
нуль

Ответ 4

Еще один надежный способ:

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