【发布时间】:2017-01-22 15:49:55
【问题描述】:
我想问一下mongodb文档设计的问题
我有这样结构的文档
{
_id:123,
data:[
[
{ name: "andy" }, ....
],
[
{ price : 1000 }, ....
],
.....
]}
我将 1 个事务放入 1 个文档中,因此易于管理数据。但是当数组中有很多数据时我遇到了一个问题,当它超过 16mb..
我不想将数据更改或拆分为多个文档,因为我的应用程序已经依赖于它在数据数组中的索引,如果我这样做,它在应用程序端会很痛苦..
由于我使用聚合(分页、项目),因此在数据检索方面没有性能问题。
我知道将数据拆分到新文档可以解决这个问题,我只是在新文档中添加一个字段引用。
但是如果我不想拆分文档,可以吗?
【问题讨论】:
-
这可能不是可编译的语法,但请尝试以下方式:
collection.find({_id:"123"}, {"data.0.0.name"}).limit(1)这应该只返回位于索引 0 的数组的索引 0 的数组中的名称。如果你想从所有返回相同的索引你到达那里的数组,你必须多次使用投影。 mongo docs -
感谢@Tomasz 的回答,如果我的问题不清楚,对不起,我的英语不好抱歉。
-
我的问题是,如果文档超过 16 mb 怎么办?我想将所有交易放入 1 个文档中,我的应用程序始终只在该 1 个文档中推送数据或编辑。当我推送并且文档超过 16mb 时,我的应用程序运行良好,bum!数组不能再被推送,因为这个限制
-
哦,好吧,你必须把这个大文件分成小文件一次,或者使用 BLOB(强烈不推荐性能虎钳)。
-
好的,好的,我现在明白了,感谢tomasz的回答
标签: mongodb aggregation-framework spring-data-mongodb