Mongodb将objectid作为默认主键,这提供了很好的可扩展性,但是url很糟糕,我更喜欢url中的简单ID。此外,将int()放在应该接收任何东西的每个ID的情况下都非常可靠
所以想法是这样的:在通过mongodb保存任何对象之前,调用另一个nosql来接收全局计数器,该调用应该是原子的,并返回int
Redis's Inc.完全符合要求问题是...redis真的是最好的解决方案吗?也许其他一些nosql会使多个客户端的简单计数增量比redis更快?
发布于 2011-11-24 08:05:21
您可以将这个递增的数字键以类似{ "_id": 1, "currentKey": 99 }
的形式存储在MongoDB本身的单个文档集合中。
使用findAndModify命令以原子方式递增和检索currentKey
值。
最好将MongoDB URL值保留为您的ObjectId,并将此数字键存储在一个单独的唯一索引字段中,以便用于_id
查找。这样,如果您想要向下扩展,您将做好更好的准备。
发布于 2011-11-24 07:54:06
您可以为mongodb生成自己的ids,有这样一个选项。但是,你将不得不处理唯一性问题。为什么要使用另一个nosql来完成这个任务呢?我认为这是没有意义的,如果可以,你可以创建你自己的唯一密钥,并与mongo一起使用。
Redis Inc.用于计数器,如果您查看该功能,mongodb还有一个$inc操作符,您可以将其用作计数器。但这不是这个运算符的目的。它们主要用于分析等。
https://stackoverflow.com/questions/8250688
复制相似问题