sql >> データベース >  >> NoSQL >> MongoDB

MongoDbの増分マトリックス構造

    私たちが持っていると考えてみましょう:

    1 2 3
    4 5 6
    7 8 9
    

    行列は、さまざまな方法でmongodbに埋め込み配列として格納できます。

    1.行列を1次元配列として表し、次のように格納します:

    {
      _id: "1",
      matrix: [1,2,3,4,5,6,7,8,9],
      width: 3, // or store just size in case of NxN
      height: 3,
    }
    

    次に、マトリックスの3番目の要素をインクリメントするには、次の更新が必要になります。

    db.matrix.update({_id: 1}, { $inc : { "matrix.2" : 1 } }
    

    このアプローチは、可能な限り最小限のデータを保存するため、非常に軽量ですが、更新する要素の位置を常に計算する必要があり、ドライバーのマトリックスを逆シリアル化するための追加のコードを記述する必要があります。

    2.次の方法で行列を保存します:

    {
      _id: "1",
      matrix: [
      {xy: "0-0", v: 1},
      {xy: "1-0", v: 2},
      {xy: "2-0", v: 3},
      {xy: "0-1", v: 4},
      ...
      ]
    }
    

    次に、マトリックスの最初の行の3番目の要素をインクリメントするには、次の更新が必要になります。

    db.matrix.update({_id: 1, "matrix.xy": 2-0 }, { $inc : { "matrix.$.v" : 1 } }
    

    このアプローチはドライバー側からはより単純なはずですが、データベースにより多くの情報を保存する必要があります。

    もっと好きなものを選んでください。



    1. モデルで現在のユーザーの詳細を取得するための良い方法は何ですか?

    2. nodeJSでのPub/subの実装

    3. node.jsおよびmongoとのシングルトン接続のセットアップ

    4. mongoDB:$unwindを元に戻す方法