我在 mongo db 中有一组带有“votes”字段的博客文章:
> db.posts.find({}, {_id:0, votes: 1})
{ "votes" : 1 }
{ "votes" : 2 }
{ "votes" : 2 }
{ "votes" : 3 }
{ "votes" : 3 }
比我有一个网络界面来显示每页一个帖子和控件(下一个,上一个)来滑动按投票排序的帖子。我将下一个/上一个帖子的请求发送到具有当前投票计数的服务器并选择新的。所以我得到下一个查询(每个http请求一个)
> db.things.find({vote: {$gt: 0}}, {_id:0, votes:1}).limit(1) // current votes == 0
{ "votes" : 1 }
> db.things.find({vote: {$gt: 1}}, {_id:0, votes:1}).limit(1) // current votes == 1
{ "votes" : 2 }
> db.things.find({vote: {$gt: 2}}, {_id:0, votes:1}).limit(1) // current votes == 2
{ "votes" : 3 }
...
如您所见,跳过了等于“投票”的文档。所以我需要一些方法来使文档唯一并迭代相等的投票(投票字段可能会经常更新,并且每个文档都有许多相等的值)。
有没有办法解决这个问题?看起来我需要某种搜索索引。但正如我所说,标准字段变化非常频繁,我计划拥有数百万个文档。这意味着索引更新将是非常昂贵的操作,我希望系统对更新做出安全响应。