哎哟!我在 MongoDB 上遇到了一个非常有趣的问题,而且可能更普遍地是在 JSON 上。基本上,我不小心创建了一些 MongoDB 文档,其子文档包含一个空键,例如(我剥离了ObjectID
s 以使代码看起来更好):
{
"_id" : ObjectId("..."),
"stats" :
{
"violations" : 0,
"cost" : 170,
},
"parameters" :
{
"" : "../instances/comp/comp20.ectt",
"repetition" : 29,
"time" : 600000
},
"batch" : ObjectId("..."),
"system" : "Linux 3.5.0-27-generic",
"host" : "host3",
"date_started" : ISODate("2013-05-14T16:46:46.788Z"),
"date_stopped" : ISODate("2013-05-14T16:56:48.483Z"),
"copy" : false
}
当然问题是行:
"" : "../instances/comp/comp20.ectt"
因为我无法取回该字段的值。如果我使用以下方式查询:
db.experiments.find({"batch": ObjectId("...")}, { "parameters.": 1 })
我得到的是parameters
子文档的全部内容。我的猜测是,.
如果后面跟着一个空选择器,它可能会被忽略。从JSON规范(15.12.*)看来,空键是允许的。您对如何解决这个问题有任何想法吗?
这是已知的行为吗?那有什么用吗?
更新我尝试了$rename
该领域,但出于同样的原因,那将不起作用。.
不允许使用以结尾的键。
更新MongoDB 问题跟踪器上提交的问题。
谢谢,
托马索