MongoDB Shell - 访问名称中包含句点的集合?

时间:2011-01-13 14:02:46

标签: mongodb

我在一个名为my.collection的MongoDB数据库中找到了一个集合。

有没有办法从MongoDB shell访问此集合,尽管名称中有一个点?

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

我很确定这不正确。

4 个答案:

答案 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,则表示该集合为空。