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

Ric*_*ich 29 mongodb

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

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

> db.my.collection.findOne();
null
Run Code Online (Sandbox Code Playgroud)

我很确定这不正确.

小智 87

试试这个:

db["my.collection"].findOne();
Run Code Online (Sandbox Code Playgroud)

你遇到与连字符或[a-zA-Z _ $] [0-9a-zA-Z_ $]上不匹配的任何其他名称相同的问题

此限制来自javascript对象属性的有效命名.

  • 我相信这应该是公认的答案,因为它解释了语法并提供了有用的解决方法. (5认同)

小智 12

如果集合名称是"my.collection"

db.my.collection.findOne(); //确定
无效

如果集合名称是"my.1.collection"

db.my.1.collection.findOne(); // Not OK
SyntaxError:missing; 在声明之前

固定:

分贝[ "my.1.collection"] findOne(); //现在是OK
null


Dra*_*SAN 8

另一个万无一失的方法是:

db.getCollection("_SCHEMA").find()
Run Code Online (Sandbox Code Playgroud)

如果名称中有下划线,仍然会导致@Laura回答错误:

> db["_SCHEMA"].find()
2016-07-18T17:44:16.948+0200 E QUERY    [thread1] TypeError: db._SCHEMA is undefined :
@(shell):1:1
Run Code Online (Sandbox Code Playgroud)


Jav*_*ero 1

你的代码是正确的。如果返回 null 则表示集合为空。