【发布时间】:2015-02-18 00:08:12
【问题描述】:
我有一个数据库结构,其文档使用外键相互引用。尽管 MongoDB 在 JOIN 查询方面做得不是很好,但我们可以通过基于外键运行单独的查询来获取文档。
我可以使用唯一的 MongoDB 的 ObjectID (_id)。但它太长了,而且在客户端显示这个长 id 来查询数据看起来有点难看。我想在 MongoDB 中创建自定义自动增量来解决这个问题,但 MongoDB 文档说:
通常在 MongoDB 中,您不会对 _id 字段或任何字段使用自动递增模式,因为它不适用于具有大量文档的数据库。
那么我下面的数据结构的最佳解决方案是什么
Collection: Products
{
Project_ID: 1001, <Auto Incrementing>
Product: "Example Product",
..<Few other fields>..
}
Collection: Payments
{
Project_ID: 1001, <Foreign key>
Pay_ID: 2001, <Auto Incrementing>
..<Few other fields>..
}
Collection: Others
{
Project_ID: 1001, <Foreign key>
Pay_ID: 2001, <Foreign key>
Other_ID: 3001, <Auto Incrementing>
..<Few other fields>..
}
【问题讨论】:
-
很少向客户显示
_id,对吧?您可以随时使用POST请求隐藏_id。 -
Erm,几乎每一种显示技术都允许枚举表格行等。长话短说 OP:没有自动增量。
-
@OP:我感觉您正在尝试做的事情(有意或无意地)是将 MongoDB 用作 RDBMS。 MongoDB 中没有外键的概念,也没有自动增量。如果您尝试使用 MongoDB 来模拟 RDBMS,将会发生以下情况:您最终会得到一个过度规范化、性能不佳的系统以及臃肿的代码库。整个发展过程从一开始就不同。在 RDBMS 中,您类似于域模型结构并尝试回答您的问题。在 MongoDB 中,您可以根据想要回答的问题创建模型。
标签: mongodb mongodb-query auto-increment nosql