我想有一个矩阵结构(一个NxN整数矩阵),我想增加它的值。在MongoDb中为矩阵建模并增加它们的值是正确的方法?MongoDb中的增量矩阵结构
4
A
回答
5
让我们考虑,我们有:
1 2 3
4 5 6
7 8 9
您可以存储矩阵在MongoDB中以不同的方式嵌入式阵列:
1.Represent矩阵作为一维数组和存储这样的:
{
_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.Store矩阵方式如下:
{
_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 } }
这种方法应该是从驾驶员侧简单,但是您需要将更多信息存储在数据库中。
选择你喜欢的任何更多。
0
你可以使用矩阵索引字段名:
这种方法的{
_id: "1",
matrix: {
"0": {{"0": 0}, {"1": 0}, {"2": 0}}
"1": {{"0": 0}, {"1": 0}, {"2": 0}},
"2": {{"0": 0}, {"1": 0}, {"2": 0}},
"3": {{"0": 0}, {"1": 0}, {"2": 0}},
...
]
}
一个优点是,你不必初始化矩阵,如$inc
将创建领域,并分配给它的价值你想增加。
您还可以一次更新多个字段,或者在文档不存在的情况下使用upsert=true
创建文档。
末,用于更新的符号是很干净,很容易:
db.matrix.update({_id: 1}, { $inc : { "matrix.0.0" : 1, "matrix.0.1" : 2, ... } }
相关问题
- 1. Mongodb阵列结构
- 2. 给定矩阵中的指数增量
- 3. 结构矩阵的malloc - C
- 4. MatLab的矩阵结构
- 5. 使用结构的矩阵
- 6. 增量基于指数的另一个矩阵的矩阵
- 7. 矩阵数据结构
- 8. Java动态矩阵结构
- 9. 如何加总结构中的矩阵(向量)元素
- 10. numpy:如何从矩阵向量构造向量矩阵
- 11. 在matlab中递增矩阵
- 12. 带矩阵结构的有序列表
- 13. C++ - 自定义的矩阵结构
- 14. 结构内矩阵的平均值
- 15. 矩阵的Java数据结构?
- 16. 用于改进Cython代码的高效矩阵向量结构
- 17. C++矩阵类层次结构
- 18. Eclipse android布局矩阵结构
- 19. 稀疏矩阵乘法结构
- 20. 在Python中增加矩阵的子集
- 21. 如何在一个向量,矩阵,结构
- 22. 非标量结构阵列
- 23. x264中的量化矩阵
- 24. 从NULL增加矩阵R
- 25. 增广矩阵在与NumPy
- 26. 不公开中的R的矩阵的列表的结构
- 27. 矩阵在C中的结构中工作吗?
- 28. 将矩阵结构中的txt数据集加载到matlab中
- 29. 使用结构的c中的矩阵乘法
- 30. 在结构中存储的所有矩阵的平均值
我想第二个解决方案与UPSERT更新相结合,但不幸的是由文档的建议,这是行不通的。所以我在想,我可以使用配对行列的地图作为关键。在这种情况下,它可以与upsert配合使用,如果某些单元没有价值,我认为可以节省空间。这是对的吗? – Matroska 2012-02-10 22:52:49