sql >> Databasteknik >  >> NoSQL >> MongoDB

Inkrementera matrisstrukturen i MongoDb

Låt oss tänka på att vi har:

1 2 3
4 5 6
7 8 9

Du kan lagra matris som inbäddad array i mongodb på olika sätt:

1. Representera matris som endimensionell array och lagra så här:

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

För att sedan öka det tredje elementet i matrisen behöver du följande uppdatering:

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

Detta tillvägagångssätt är mycket lätt, eftersom du lagrar så lite data som möjligt, men du kommer alltid att behöva beräkna elementets position för att uppdatera, och du kommer att behöva skriva ytterligare kod för att deserialisera matrisen i din drivrutin.

2. Lagra matris på följande sätt:

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

För att sedan öka det tredje elementet i den första raden i matrisen behöver du följande uppdatering:

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

Detta tillvägagångssätt borde vara enklare från förarsidan, men du kommer att behöva lagra mer information i en databas.

Välj det du gillar mer.



  1. MongoDB:Inbäddade användare i kommentarer

  2. Hur man tar bort Redis på "meddelande"-lyssnare

  3. MongoDB - distinkt med fråga använder inte index

  4. Node.js visar bilder från Mongo's GridFS