一周前我开始学习 MongoDB,但我被困在关系上。更像是我很困惑。我知道何时使用嵌入式关系以及何时使用引用关系。我知道嵌入式关系有一些缺点,这就是为什么我们更喜欢引用关系而不是嵌入式关系。现在,我正在学习 DBRefs。问题是,无论如何我都觉得它没有帮助。那就是我所想的。我希望我错了。
在 DBrefs 中,我们可以在不同集合中的一个文档中引用来自不同集合的文档。在 RefRels 中,我们可以在不同集合中的一个文档中引用来自不同集合的不同文档。
我的意思是,我们可以使用 DBrefs 执行我们可以使用引用关系执行的相同操作。
在引用关系中,我们在文档的集合中创建一个字段,并存储来自不同集合的文档的 ObjectId,如下所示:
> db.Employee.insert({"Emp_Name":"Emp_1", "Emp_Address":[ObjectId("some_id_from_Address_collection"), ObjectId("some_id_from_Address_collection"), ObjectId("some_id_from_Address_collection")], "Emp_Phone":[ObjectId("some_id_from_Phone_collection"), ObjectId("some_id_from_Phone_collection"), ObjectId("some_id_from_Phone_collection")]})
在 DBrefs 中,我们在文档的集合中创建一个字段,并使用 ObjectIds 存储值,就像我们在引用关系中所做的那样,但方式不同。考虑以下示例:
> db.Employee.insert({"address": {"$ref": "address_home", "$id": ObjectId("534009e4d852427820000002"), "$db": "tutorialspoint"}, "name": "Tom Benzamin"})
我们仍在使用 ObjectId 将值存储在 Employee 集合中,但语法不同,因为在此示例中,我们提到要查看哪个 DB 和 Collection。
为什么不直接使用引用关系并节省时间,而不是使用这种令人困惑且冗长的查询并浪费一半时间?
我错过了什么吗?
我什至应该考虑学习 DBrefs 吗?