我在一个名为my.collection
的MongoDB数据库中找到了一个集合。
有没有办法从MongoDB shell访问此集合,尽管名称中有一个点?
> db.my.collection.findOne();
null
我很确定这不正确。
答案 0 :(得分:85)
试试这个:
db["my.collection"].findOne();
您遇到与连字符或任何其他不匹配的名称相同的问题 [A-ZA-Z _ $] [0-9A-ZA-Z _ $]
此限制来自javascript对象属性的有效命名。
答案 1 :(得分:12)
如果集合名称是“my.collection”
db.my.collection.findOne(); //好的 空
如果集合名称是“my.1.collection”
db.my.1.collection.findOne(); //不行 SyntaxError:missing;在陈述之前
修正:
分贝[ “my.1.collection”] findOne(); //现在可以了 空
答案 2 :(得分:6)
另一种万无一失的方法是:
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
答案 3 :(得分:2)
您的代码是正确的。如果它返回null,则表示该集合为空。