如何在字段名称中使用点?

Bdf*_*dfy 25 mongodb

如何在字段名称中使用点?

我在示例中看到错误:

db.test2.insert({ "a.a" : "b" })

can't have . in field names [a.a]
Run Code Online (Sandbox Code Playgroud)

Fis*_*isk 46

您可以将字段名称的点符号替换为等效的Unicode \uff0E

db.test.insert({"field\uff0ename": "test"})
db.test.find({"field\uff0ename": "test"}).forEach(printjson)
{ "_id" : ObjectId("5193c053e1cc0fd8a5ea413d"), "field?name" : "test" }
Run Code Online (Sandbox Code Playgroud)

看更多:

  1. http://docs.mongodb.org/manual/faq/developers/#faq-dollar-sign-escaping
  2. http://docs.mongodb.org/manual/core/document/#dot-notation

  • @William如果你使用你建议的纯unicode char,它无论如何都会变成一个ASCII时期 - 这将是一种指定它的奇特方式.\ uFFOE是一个"FULLWIDTH FULL STOP"字符,因为非ASCII字符将被忽略."ONE DOT LEADER"角色可能看起来更好,因为它的中心位置与正常时期一样.[我刚刚在Apple产品上证实,2024字符看起来好多了 - 就像真实时期一样.] (3认同)
  • 我认为这段时间的unicode是"\ u002e". (2认同)

lig*_*lig 4

实际上您可以在查询中使用点。请参阅:http ://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29

由于这个特殊的点符号意味着您不能在字段名称中使用它。就像在大多数编程语言中不能在标识符中使用点符号一样。

您可以编写查询db.test2.find({ "a.a" : "b" }),但如果您希望能够编写这样的查询,您需要像这样插入对象db.test2.insert({"a": {"a": "b"}}):这将创建具有以嵌入文档的值命名的字段的文档,"a"该嵌入文档包含"a"(再次)以值 命名的字段"b"