MongoDB字段名中不允许使用哪些字符?

MongoDB字段名中不允许使用哪些字符?,mongodb,Mongodb,我当然明白了。空间是不允许的。还有其他被禁止的角色吗 您可以在字段名中使用任何(UTF8)字符,但这些字符不是 特殊(包含“”,或以“$”开头) 通常最好使用带下划线的小写字母数字。另外需要注意的是,您可以创建一个名为“query”的属性名称,但随后在其上使用查询运算符,这使得执行大量查询变得很困难 例如: 插入具有名为的属性的文档 db.coll.insert({ query: 'foo' }); 平等查询工作: db.coll.findOne({ query: 'foo' });

我当然明白了。空间是不允许的。还有其他被禁止的角色吗

您可以在字段名中使用任何(UTF8)字符,但这些字符不是 特殊(包含“”,或以“$”开头)


通常最好使用带下划线的小写字母数字。

另外需要注意的是,您可以创建一个名为“query”的属性名称,但随后在其上使用查询运算符,这使得执行大量查询变得很困难

例如:

插入具有名为的属性的文档

db.coll.insert({ query: 'foo' });
平等查询工作:

db.coll.findOne({ query: 'foo' });    
不相等($ne)不:

db.coll.findOne({ query: { $ne: 'bar' } });

类似的问题:空间是允许的。产品规格如何?如果字段名是实际的规范描述,它不会大大简化设计吗?(例如,
'Screen Size':'26 inches'
)不一定,@Dor-您希望在UI和数据库之间有一点灵活性(没有什么比客户更易变的了:“等等,我希望它说的是‘显示大小’,而不是‘屏幕大小’)。当然,还有整个国际化问题,也需要脱钩。顺便说一句,当Acorn说“任意UTF8”时,其中包含空格,因此如果您愿意,您在这里完全可以。它将如何处理驼峰大小写的单词,如
userDetails
?这是正确的吗?@Dor给出了一个具体的反例来反驳“通常最好使用带下划线的小写字母数字。”在数据库层,如果不更好地理解用例是什么,就很难做出这样的声明。在像MongoDB这样的文档数据库中,有许多潜在的使用案例,人们可能会想象使用程序员定义的标识符以外的键,在这种情况下,很高兴明确知道哪些字符可以被允许或不允许。“/”这是我不推荐的,因为mongodump和mongorestore会有问题,这很好。但是您仍然可以作为
db.coll.findOne({query:{query:{$ne:'bar'}}}})执行该查询
。所以这不是不可能的,但很尴尬。谢谢,直到我发布这篇文章之后,我才意识到这不是不可能的。肯定更尴尬。从3.2(2015年底发布)开始,这是固定的。