Ответ 1
Ваш код верен. Если он возвращает null, это означает, что коллекция пуста.
Я нашел коллекцию в одной из наших баз данных MongoDB с именем my.collection
.
Есть ли способ получить доступ к этой коллекции из оболочки MongoDB, несмотря на то, что она имеет точку в имени?
> db.my.collection.findOne();
null
Я уверен, что это неверно.
Ваш код верен. Если он возвращает null, это означает, что коллекция пуста.
попробуйте это вместо:
db["my.collection"].findOne();
вы сталкиваетесь с той же проблемой с дефисами или любым другим именем, которое не совпадает с [A-Za-Z _ $] [0-9a-Za-Z _ $]
Это ограничение исходит из допустимого имени для свойств объекта javascript.
если имя коллекции - "my.collection"
db.my.collection.findOne();//ОК
нуль
если имя коллекции "my.1.collection"
db.my.1.collection.findOne();//Не в порядке
SyntaxError: missing; перед выражением
Fix:
дБ [ "my.1.collection" ] findOne().//Теперь все в порядке
нуль
Еще один надежный способ:
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