Docs 菜单
Docs 主页
/
数据库手册
/ /

带句点和美元符号的字段名

MongoDB允许字段名称包含美元符号 ($) 或句点 (.)。但是,不鼓励在字段名称中使用这些字符,因为MongoDB不支持这些字段的某些功能。

在大多数情况下,使用此类字段名称存储的数据无法直接访问。 您需要在访问权限这些字段的查询中使用$getField$setField$literal等辅助方法。

对于所有类型的存储操作,字段名称的验证规则并不相同。

使用带有美元符号 ($) 前缀的字段名称或包含句点 (.) 的字段名称有一些一般限制。这些字段不能:

  • 编入索引

  • 用作分片密钥的一部分

  • 使用以下项进行验证: $jsonSchema

  • 使用转义序列进行修改

  • 字段级加密一起使用

  • 用作 _id 文档中的子字段

警告

美元符号 ($) 和句点 (.) 可能导致数据丢失。

使用以美元符号 ($) 为前缀的字段名称或包含句点 (.) 的字段名称时,如果在 MongoDB 5.0 之前的服务器上将这些字段名称与未确认的写入(写关注 w=0)结合使用,则数据丢失的可能性很小。

运行 insertupdate findAndModify 命令时,兼容 5.0 的驱动程序会取消对使用字段名称以美元 ($) 为前缀或包含句点 (.) 的文档的限制。在早期的驱动程序版本中,这些字段名称会产生客户端错误。

无论驱动程序连接到哪个服务器版本,这些限制均会被删除。如果 5.0 驱动程序将文档发送到较旧的服务器,则会拒绝该文档,而不会发送错误。

警告

使用美元符号 ($) 和句点 (.) 时的导入和导出问题

从 MongoDB 5.0 开始,文档字段名称可以是美元 ($) 前缀,并且可以包含句点 (.)。但是,对于使用这些字符的字段名称,mongoimportmongoexport 在某些情况下可能无法按预期运行。

MongoDB 扩展 JSON v2 无法区分类型封装器和碰巧与类型封装器同名的字段。不要在相应的 BSON 表示可能包含美元 ($) 前缀键的上下文中使用扩展 JSON 格式。DBRef 机制是该一般规则的例外。

在字段名中使用带句号 (.) 的 mongoimportmongoexport 也有限制。由于 CSV 文件使用句点 (.) 表示数据层次结构,因此字段名称中的句点 (.) 会被误读为嵌套级别。

有关如何处理包含句点和美元符号的字段名称的示例,请参阅这些页面:

后退

分布式查询

在此页面上