MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Incrementa la struttura della matrice in MongoDb

Consideriamo di avere:

1 2 3
4 5 6
7 8 9

Puoi memorizzare la matrice come array incorporato in mongodb in diversi modi:

1.Rappresenta la matrice come matrice unidimensionale e memorizza in questo modo:

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

Quindi per incrementare il terzo elemento di matrice avrai bisogno del seguente aggiornamento:

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

Questo approccio è molto leggero, perché memorizzi il minor numero di dati possibile, ma dovrai sempre calcolare la posizione dell'elemento da aggiornare e dovrai scrivere codice aggiuntivo per deserializzare la matrice nel tuo driver.

2.Memorizza la matrice nel modo seguente:

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

Quindi per incrementare il terzo elemento della prima riga nella matrice avrai bisogno del seguente aggiornamento:

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

Questo approccio dovrebbe essere più semplice dal lato driver, ma dovrai memorizzare più informazioni in un database.

Scegli quello che ti piace di più.