MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Erhöhen Sie die Matrixstruktur in MongoDb

Nehmen wir an, wir haben:

1 2 3
4 5 6
7 8 9

Sie können eine Matrix auf verschiedene Arten als eingebettetes Array in Mongodb speichern:

1.Matrix als eindimensionales Array darstellen und wie folgt speichern:

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

Um dann das dritte Element der Matrix zu erhöhen, benötigen Sie das folgende Update:

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

Dieser Ansatz ist sehr leicht, da Sie so wenig Daten wie möglich speichern, aber Sie müssen immer die Position des zu aktualisierenden Elements berechnen und zusätzlichen Code schreiben, um die Matrix in Ihrem Treiber zu deserialisieren.

2.Matrix wie folgt speichern:

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

Um dann das dritte Element der ersten Zeile in der Matrix zu erhöhen, benötigen Sie folgendes Update:

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

Dieser Ansatz sollte von der Treiberseite aus einfacher sein, aber Sie müssen mehr Informationen in einer Datenbank speichern.

Wählen Sie, was Ihnen mehr gefällt.