MongoDB docs显示了一对多关系的示例......
(简称...)
与文档参考的模型一对多关系
// Publisher. { _id: "oreilly", name: "O'Reilly Media", } // Book. { _id: 123456789, title: "MongoDB: The Definitive Guide", publisher_id: "oreilly" } // Book. { _id: 234567890, title: "50 Tips and Tricks for MongoDB Developer", publisher_id: "oreilly" }
为什么发布商_id
是一个逻辑的,人类可读的名称,而图书_id
似乎已生成surrogate keys?
所有_id
都不会生成值吗?
在MongoDB中,有时将数据本身用作唯一密钥,有时候不是吗?
如果是这样,我们何时使用普通名称(&#34; mary&#34;,&#34; joe&#34;,&#34; exxon&#34;),我们何时更喜欢生成的值?< / p>
答案 0 :(得分:1)
所有_ids都不会生成值吗?
MongoDB仅在用户未提供时才会自动生成_id。
在MongoDB中,有时候将数据本身用作a 唯一的关键,有时不是?
是的,数据可以用作密钥。 _id值必须在集合中是唯一的才能正确标识文档。如果满足上述条件,则可以将文档中的任何参数设置为_id。当_id在集合中不唯一时,将抛出重复键错误。
如果是这样,我们何时使用普通姓名(&#34; mary&#34;,&#34; joe&#34;,&#34; exxon&#34;),以及 我们何时更喜欢生成的值?
当没有唯一标识文档的参数(或参数组)时,我们更喜欢生成的_id。例如,使用人名不起作用,因为可能会出现添加具有相同名称的其他人的情况。但是,考虑一本书籍ISBN号,它唯一地标识一本书。这些参数可以用作_id。
附加说明: