43

MongoDB について聞いたことがありますが、その概念を完全に理解しているかどうかはわかりません。

MongoDB に複数の JSON オブジェクトが保存されている場合:

[{"id": "peter",
  "age": "12",
  "gender": "male"},
 {"id": "gemma",
  "age": "12",
  "gender": "female"},
 {"id": "paul",
  "age": "13",
  "gender": "male"}]

を使用してすべての JSON オブジェクトをクエリするにはどうすればよいage >= 12ですか?

4

6 に答える 6

51

まず、JSON は単なるシリアル化手法であることを理解してください。このシリアライゼーション方法自体は、おそらく持続媒体を決定するべきではありません。あなたの質問を表面的に見ると、あなたが探しているのは、SQL を使用して柔軟な方法でデータに対してクエリを実行できる典型的なリレーショナル ストレージ データベースのようです。

このようなリレーショナル データベースから取得した後に格納または表示するために JSON データをシリアライズ/デシリアライズすることは、ほとんどすべてのプログラミング言語で簡単に行うことができます。

実際には構造が固定されていない JSON ドキュメント (またはその他の種類のドキュメント) のさまざまなスニペットを本当に格納する必要がある場合は、通常、MongoDB などの NoSQL タイプのソリューションを検討し始めることになります。より一般的な NoSQL データベースを使用する場合に考えられるもう 1 つのシナリオは、大量のデータを処理し、水平方向にスケーリングする必要がある場合です (つまり、データが非常に大きいため、複数のサーバーにまたがってデータベースをスケーリングする必要があります)。多くの NoSQL システムでは、従来のリレーショナル DB よりもはるかに簡単に実行できます。もちろん、そのようなシナリオでは、ユースケースに最も役立つ方法でデータの読み取り、書き込み、およびクエリを実行できるようにするために提供される機能に基づいて、これらのツールを評価する必要があります。

于 2013-10-04T20:36:35.037 に答える
18

5.7 以降、MySQL にはネイティブのJSON データ型が含まれるようになりました。テーブルが呼び出されstudents、JSON 列が呼び出されると仮定するとstudent、MySQL 5.7 では選択は次のように記述できます。

SELECT * FROM students WHERE JSON_EXTRACT(student, '$.age') = 12;
于 2016-04-24T02:16:09.970 に答える
7

すべてのオブジェクトが同じフィールド (id、年齢、性別など) を持っている場合、オブジェクトをリレーショナル データベース (MySQL など) の行として保存する必要があります。

于 2013-10-04T20:08:26.113 に答える