首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB / NoSQL关系没有AutoIncrement?

MongoDB / NoSQL关系没有AutoIncrement?
EN

Stack Overflow用户
提问于 2014-01-09 12:54:57
回答 3查看 1.6K关注 0票数 0

因此,MongoDB不支持缩放目的的自动增量。

我的问题是,那么,我用什么来约束呢?

我应该使用对象id作为查找某些东西的约束吗?这不是很慢吗?(这是一个12-BYTE字段!)

我是否应该使用唯一的键作为一种“主键”?比如Books.find('actual-author-name')?这样会更快吗?

基本上,这样做的一般/公认方式是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-09 12:58:09

如果您已经有了一个合适的键,请使用该字段作为集合之间关联的_id字段。您也可以依赖12字节字段,因为它实际上并不多。还请检查使用嵌入式文档是否不容易,以避免将所有链接放在一起--这通常是像MongoDB这样的文档数据库中的首选解决方案。

票数 1
EN

Stack Overflow用户

发布于 2014-01-09 12:59:46

You 使用自动递增字段。在MongoDB的文档中看到以下代码:

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/#a-counters-collection

这是对一个广泛问题的基于意见的回答,我提供给您的代码使用另一个集合来完成它所做的事情,但我的重点是,您可以自动递增字段。

票数 1
EN

Stack Overflow用户

发布于 2014-01-09 14:52:55

自动增量的要点通常是自动生成键值,这些键值保证是唯一的.

MongoDB ObjectID不仅对集合是唯一的,而且甚至是全局唯一的,从而完全填补了这个角色。它们也是按升序排列的,因为它们以当前时间戳开始。

它们不能保证是连续的,但是SQL数据库中的自动增量列也不是,因为当您删除记录时,该ID将不会被重用。

注意,_id字段MongoDB不一定需要是ObjectID。您还可以对其进行任何其他数据的转换。因此,当您的数据集已经具有唯一标识符时,可以在插入文档之前手动填充_id来使用这些标识符。_id字段甚至不必是一个原始值。它甚至可以是一个物体。因此,您可以拥有这样的多字段主键:

代码语言:javascript
复制
_id: { first_name = "John", last_name = "Smith" }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21020892

复制
相关文章

相似问题

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