mongodb - MongoDb中的增量矩阵结构

标签 mongodb matrix increment

我想要一个矩阵结构(一个 NxN 整数矩阵)并且我想增加其中的值。在 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 } }

从驱动程序端来看,这种方法应该更简单,但您需要在数据库中存储更多信息。

选择你更喜欢的。

关于mongodb - MongoDb中的增量矩阵结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235249/

相关文章:

mongodb - Mongoose 没有自动增加 __v

javascript - 无法使用 .update() 更新 Mongoose 属性

node.js - 如何使用 MongoDB 创建关系?

python - 使用python查找子矩阵中不同元素数量的最佳方法

algorithm - 查找二维矩阵中的路径和内部字段

从 R 中的相关矩阵返回值

mongodb - 类似于sql中的组连接

java - CountDownTimer——表示用户递增。问题

c# - 如何在C#中的for循环中递增i

c# - C#中的线程安全增量