首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDb封顶子集

MongoDb封顶子集
EN

Stack Overflow用户
提问于 2011-07-01 16:00:46
回答 4查看 2K关注 0票数 2

是否可以创建一个有上限的子集合。我试着做这样的事情:

代码语言:javascript
复制
user = {
  name: String,
  latest_messages: [String]
}

其中latest_messages的上限为10。

如果没有,你有什么建议作为替代方案?

更新1:

似乎手动保持数组上限是唯一的解决方案。这里有一种方法可以做到:

代码语言:javascript
复制
joe = {name: 'Joe', latest_messages: ['', '', '', '', '', '', '', '', '', '']}
db.users.save(joe)

db.users.update({name: 'Joe'}, {$push: {'latest_messages': 'hello'}})
db.users.update({name: 'Joe'}, {$pop: {'latest_messages': -1}})

db.users.update({name: 'Joe'}, {$push: {'latest_messages': 'world'}})
db.users.update({name: 'Joe'}, {$pop: {'latest_messages': -1}})

对于如何提高效率有什么建议吗?

更新2:

有一个打开吉拉票,“服务器-1050”请求将两者(push & pop)添加为一个原子操作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-01 16:09:49

您只能指定有上限的集合的文档总数。除非通过应用程序中的一些检查,否则无法限制数组的大小。

票数 0
EN

Stack Overflow用户

发布于 2013-09-01 17:01:52

在2.4版中,有一个特性允许这样做,称为“有上限的数组”。这使您可以将$push文档与$each$slice$sort运算符一起添加到数组中,从而向数组中添加一个或多个文档,同时保持给定的大小,并按指定的子文档字段排序。

请参阅确切的语法和示例这里

票数 2
EN

Stack Overflow用户

发布于 2011-07-01 17:58:12

也许您可以为每个用户创建一个单独的上限集合?因此,集合的名称是每个用户的名称。我不知道如果您有很多集合,MongoDB是否会变慢?您有多少不同的用户?大概是100,1000,10000.?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6550346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档