Rozważmy, że mamy:
1 2 3
4 5 6
7 8 9
Możesz przechowywać macierz jako tablicę osadzoną w mongodb na różne sposoby:
1. Reprezentuj macierz jako jednowymiarową tablicę i przechowuj w następujący sposób:
{
_id: "1",
matrix: [1,2,3,4,5,6,7,8,9],
width: 3, // or store just size in case of NxN
height: 3,
}
Następnie, aby zwiększyć trzeci element macierzy, będziesz potrzebować następującej aktualizacji:
db.matrix.update({_id: 1}, { $inc : { "matrix.2" : 1 } }
To podejście jest bardzo lekkie, ponieważ przechowujesz jak najmniej danych, ale zawsze będziesz musiał obliczyć pozycję elementu do aktualizacji i będziesz musiał napisać dodatkowy kod, aby zdeserializować macierz w sterowniku.
2. Przechowuj macierz w następujący sposób:
{
_id: "1",
matrix: [
{xy: "0-0", v: 1},
{xy: "1-0", v: 2},
{xy: "2-0", v: 3},
{xy: "0-1", v: 4},
...
]
}
Następnie, aby zwiększyć trzeci element pierwszego rzędu w macierzy, będziesz potrzebować następującej aktualizacji:
db.matrix.update({_id: 1, "matrix.xy": 2-0 }, { $inc : { "matrix.$.v" : 1 } }
To podejście powinno być prostsze od strony kierowcy, ale będziesz musiał przechowywać więcej informacji w bazie danych.
Wybierz to, co lubisz bardziej.