MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Увеличаване на матричната структура в MongoDb

Да приемем, че имаме:

1 2 3
4 5 6
7 8 9

Можете да съхранявате матрица като вграден масив в mongodb по различни начини:

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,
}

След това, за да увеличите третия елемент на матрицата, ще ви трябва следната актуализация:

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},
  ...
  ]
}

След това, за да увеличите третия елемент от първия ред в матрицата, ще ви трябва следната актуализация:

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

Този подход трябва да е по-прост от страна на драйвера, но ще трябва да съхранявате повече информация в база данни.

Изберете каквото ви харесва повече.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да комбинирам няколко колекции в една колекция, използвайки $lookup mongodb или nodejs mongodb?

  2. MongoDB - Рамка за агрегиране (Общ брой)

  3. Регистриране на одит за MongoDB

  4. Не може да се извлекат данни от API с помощта на Express NodeJS и MongoDB, зареждане

  5. Когато използвате rmongodb, не можете да видите колекции в mongoDB