如何在字段名称中使用点?
我在示例中看到错误:
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)
看更多:
实际上您可以在查询中使用点。请参阅: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"。