Я начал изучать MongoDB как неделю go, и я застрял в отношениях. Больше похоже на то, что я в замешательстве. Я понимаю, когда использовать встроенные отношения, а когда использовать ссылочные отношения. Я знаю, что встроенные отношения имеют некоторые недостатки, поэтому мы предпочитаем ссылочные отношения встроенным. Сейчас я изучаю DBRefs. Дело в том, что я не считаю это полезным в любом случае. Это то, что я думаю. Надеюсь, я ошибаюсь.
В DBrefs мы можем ссылаться на документы из разных коллекций в одном документе, который находится в другой коллекции. В RefRels мы можем ссылаться на разные документы из разных коллекций в одном документе, который находится в другой коллекции.
Я имею в виду, мы можем выполнить то же самое, используя DBrefs, что мы можем выполнить, используя ссылочные отношения.
В ссылочных отношениях мы создаем поле в коллекции в документе и сохраняем ObjectIds документов из разных коллекций, например:
> 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, но синтаксис другой, потому что в этом примере мы упоминаем, какую БД и коллекцию искать.
Почему бы просто не использовать ссылочные отношения и сэкономить время, вместо использования этого запутанного и длинного запроса и напрасно тратить половину времени?
Я что-то упустил?
Стоит ли мне даже изучать DBrefs?