MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Incrementar a estrutura da matriz no MongoDb


Vamos considerar que temos:
1 2 3
4 5 6
7 8 9

Você pode armazenar a matriz como matriz incorporada no mongodb de diferentes maneiras:

1.Represente a matriz como um array unidimensional e armazene assim:
{
  _id: "1",
  matrix: [1,2,3,4,5,6,7,8,9],
  width: 3, // or store just size in case of NxN
  height: 3,
}

Então, para incrementar o terceiro elemento da matriz, você precisará da seguinte atualização:
db.matrix.update({_id: 1}, { $inc : { "matrix.2" : 1 } }

Essa abordagem é muito leve, porque você armazena o mínimo de dados possível, mas sempre precisará calcular a posição do elemento a ser atualizado e precisará escrever código adicional para desserializar a matriz em seu driver.

2. Armazene a matriz da seguinte maneira:
{
  _id: "1",
  matrix: [
  {xy: "0-0", v: 1},
  {xy: "1-0", v: 2},
  {xy: "2-0", v: 3},
  {xy: "0-1", v: 4},
  ...
  ]
}

Então, para incrementar o terceiro elemento da primeira linha na matriz, você precisará da seguinte atualização:
db.matrix.update({_id: 1, "matrix.xy": 2-0 }, { $inc : { "matrix.$.v" : 1 } }

Essa abordagem deve ser mais simples do lado do driver, mas você precisará armazenar mais informações em um banco de dados.

Escolha o que você mais gosta.