似乎mongo不允许插入带点(.)或美元符号($)的键,但是当我使用mongoimport工具导入包含点的JSON文件时,它工作正常.司机抱怨试图插入该元素.
这是文档在数据库中的样子:
{
"_id": {
"$oid": "..."
},
"make": "saab",
"models": {
"9.7x": [
2007,
2008,
2009,
2010
]
}
}
Run Code Online (Sandbox Code Playgroud)
我这样做是错误的,不应该使用像外部数据那样的哈希映射(即模型),还是可以以某种方式逃避点?也许我在想类似Javascript.
当我尝试用'.'保存一个字典.在密钥PyMongo中引发错误(InvaildName)然而我确实看到(在Mongodb网站上)密钥可以包含'.'.为什么pymongo不会让我保存这些文档?他们和Mongo有问题吗?
詹姆士
我试着按照这个 如何在字段名称中使用点?.但它的结果如同图片.还有一个空间: -
protected Document setNestedField(Document doc, FieldValue parentField, String nestedFieldName, Object value, boolean concatenate) {
if (concatenate) {
doc.put(parentField.getSystemName() + "." + nestedFieldName, value);
}
else {
doc.put(nestedFieldName, value);
}
return doc;
}
Run Code Online (Sandbox Code Playgroud)
例外: - 无效的BSON字段名称photographs.inner_fields; 嵌套异常是java.lang.IllegalArgumentException:无效的BSON字段名称为photographs.inner_fields.
我怎么能用点"." 在字段名称中.我必须使用.因为我正在使用一些第三方api,我没有选择替换像[dot]这样的东西.请建议我?