1. ホーム
  2. javascript

[解決済み] MongoDBのキー名におけるドット(.)

2022-12-05 09:42:43

質問

mongo はドット (.) やドル記号 ($) を含むキーの挿入を許可しないようですが、mongoimport ツールを使用してドットを含む JSON ファイルをインポートしたところ、うまくいきました。ドライバはその要素を挿入しようとして文句を言っています。

データベースではこのようなドキュメントになっています。

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

私はこれをすべて間違っていて、外部データ(つまりモデル)でこのようなハッシュマップを使うべきではないのでしょうか、それともどうにかしてドットを逃れることができるのでしょうか?もしかしたら、私はあまりにもJavascriptのように考えているのかもしれません。

どのように解決するのですか?

MongoDBがサポートしていない キーにドット をサポートしていないので、JSON ファイルをインポートする前にそれらを削除したり置き換えたりする前処理が必要になります。

この問題に対する標準的な回避策はなく、最良の方法は状況の細部に依存しすぎています。しかし、JSON の再構築がおそらく 1 回限りのコストであるのに対し、キー エンコーダー/デコーダーのアプローチは永久にその不便さを払い続けることになるため、可能であれば避けたいと思います。