当前位置: 首页 > 面试题库 >

密钥名称中的MongoDB点(。)

潘国源
2023-03-14
问题内容

似乎mongo不允许插入带点(。)或美元符号($)的键,但是当我使用mongoimport工具导入其中包含点的JSON文件时,效果很好。驱动程序抱怨试图插入该元素。

这是文档在数据库中的外观:

{
    "_id": {
        "$oid": "..."
    },
    "make": "saab",
    "models": {
        "9.7x": [
            2007,
            2008,
            2009,
            2010
        ]
    }
}

我是不是做错了,不应该使用带有外部数据的哈希图(例如模型),还是可以以某种方式逃脱点?也许我在想太多类似Javascript的东西。


问题答案:

MongoDB不支持其中带有圆点的键,因此在导入之前,您必须预处理JSON文件以删除/替换它们,否则您将为各种问题做好准备。

没有标准的解决方法可以解决此问题,最好的方法过于依赖于具体情况。但是,如果可能的话,我会避免使用任何关键的编码器/解码器方法,因为您将继续永久性地给它带来不便,因为JSON重组可能是一次性的成本。



 类似资料:
  • 我有一个YAML文件(在我的例子中是docker-compose文件),如下所示: 我尝试了这个,但没有成功,从这个问题中得到启发:

  • 问题内容: 我有一个JSON数据结构,如下所示: 我需要将键名称从“名称”和“子代”更改为“键”和“值”。关于如何为该嵌套结构中的每个键名执行此操作的任何建议? 问题答案: 我不知道为什么JSON标记的末尾会有分号 (假设这就是问题中所代表的意思) ,但是如果删除了分号,则可以在分析数据时使用 reviver函数 进行修改。 演示: http : //jsfiddle.net/BeSad/

  • 问题内容: 我有一些看起来像这样的JSON 我将其解析为JArray: 然后,我遍历数组: 是一个 如何检索每个项目的“名称”或“键”? 例如,“ MobileSiteContent”或“ PageContent” 问题答案: 是基类,,,,等你可以使用的方法来获得JToken的孩子是某种类型的过滤列表,例如。每个对象都有一个对象集合,可以通过方法访问这些对象。对于每个,您都可以得到它。(当然,如

  • 问题内容: 我刚刚开始使用MongoDb,我注意到我有很多重复的记录,这些记录本来就是唯一的。我想知道如何对数据使用组合键,并且正在寻找有关如何创建它们的信息。最后,我使用Java来访问mongo和morphia作为我的ORM层,因此将您的答案中的内容包括在内是非常棒的。 Morphia:http : //code.google.com/p/morphia/ 问题答案: 您也可以将对象用于_id字

  • 问题内容: 我希望使用该软件包封送在我的应用程序的一个导入软件包中声明的结构。 例如。: 因为是导入的,所以结构中所有可用的(导出的)字段都以大写字母开头。但我希望使用小写的键名: 将导致 {“ Foo”:42} 但我希望得到 {“ foo”:42} 是否可以通过一些简单的方法解决问题? 问题答案: 看一下encoding / json.Marshal 的文档。它讨论了如何使用struct字段标签

  • 问题内容: 我用别名为:的密钥对我的JWS应用程序MemorizEasy进行了签名。 我不记得为什么选择了这么长的别名。我怀疑这只是备忘录,但是在我的项目设置中,我有: 我现在正在更新应用程序,并使用maven将别名指定为: 但这行不通。尝试使用别名的另一个键是可行的。 那我可以更改密钥的别名吗?如果是这样,怎么办?否则,为什么Maven不接受我的别名? 问题答案: 可以使用以下命令在密钥库中复制