【问题标题】:Is it necessary to store document references as type ObjectId in Mongo?是否有必要在 Mongodb 中将文档引用存储为 ObjectId 类型?
【发布时间】:2020-05-26 23:11:43
【问题描述】:

阅读用于建模多对多关系的 mongo 文档,我看到他们正在为 _id 使用简单的字符串

{
   _id: "oreilly",
   name: "O'Reilly Media",
   founded: 1980,
   location: "CA"
}

{
   _id: 123456789,
   title: "MongoDB: The Definitive Guide",
   author: [ "Kristina Chodorow", "Mike Dirolf" ],
   published_date: ISODate("2010-09-24"),
   pages: 216,
   language: "English",
   publisher_id: "oreilly"
}

我认为根据这个问题使用实际的 ObjectId 值是有益的:Difference between storing an ObjectId and its string form, in MongoDB

我发现必须在对象和字符串之间进行转换很复杂,因为这些数据在前端 (Vue) 和后端 (NestJS/Node) 之间作为 JSON 来回传递,我想知道是否有任何真正的必要关注使用ObjectId,因为它增加了相当多的复杂性。

在执行聚合/$graphLookup 时,将引用 id 存储为字符串有什么不同吗?我是打算将此引用本身实际存储为 ObjectId 还是完全没有必要?

【问题讨论】:

  • 您引用的问题的答案已经回答了您的问题。
  • 我不确定这是否重要,但我相信另一个问题与 _id 本身有关。我想知道是否还需要将引用存储为 ObjectId,或者它基本上是一个笼统的规则,即每个 ObjectId 都应该始终这样存储,而不是字符串。

标签: mongodb


【解决方案1】:

_id 的值的唯一要求是它们是唯一的,因为 _id 总是由 MongoDB 自动索引并且该索引是唯一的。

ObjectID 的目的是允许客户端生成一个 ID,该 ID 保证在写入同一集合的各种客户端中是唯一的。如果您有更好的唯一 ID,我们鼓励您使用它,因为它可以为您节省索引。您确实不需要将该值转换为 ObjectID。它可以像其他类型一样明文使用(例如整数、小数等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 2018-07-15
    • 2019-07-22
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多