MongoDB — это база данных типа NoSQL, и предполагается, что эти базы данных не соответствуют СУБД (системам управления реляционными базами данных) и, следовательно, не предоставляют обширных методов JOIN. Однако концепция JOIN в MongoDB основана на базах данных SQL, поскольку изначально сам MongoDB не предоставлял никакого метода соединения. Вы можете СОЕДИНЯТЬ две коллекции в MongoDB с помощью оператора агрегирования $ lookup.
Одна коллекция не может описывать данные, хранящиеся в ней; одна коллекция может содержать такие поля, которые должны быть связаны с полем другой коллекции для описания этого поля. Для этого вы можете использовать оператор $ lookup метода агрегации. Однако после введения оператора $ lookup пользователи могут получать доступ к присоединению в MongoDB.
В этой статье мы кратко объяснили использование оператора $ lookup, и представлены несколько примеров, показывающих механизм присоединения MongoDB.
Как работает соединение в MongoDB
В этом разделе представлен основной рабочий механизм оператора $ lookup, который используется в методе агрегирования для выполнения соединения в MongoDB. Синтаксис представлен ниже:
Синтаксис
>db.collection—name.aggregate([
{
$lookup:
{
from: ,
localField:foreignField:
,
as: «array-field»
}
}
])
Здесь объясняются термины, используемые в синтаксисе:
– collection-name: имя коллекции, в которой вы присутствуете, или применяется оператор $ lookup.
– from из Коллекции, к которой вы собираетесь присоединиться
– localField: представляет поле документа в текущей коллекции, которое будет использоваться для сопоставления с другими коллекциями.
– foreign field: поле коллекции (для объединения), которое может представлять весь документ. (уникальный идентификатор)
– as: содержит поле массива, которое создается после присоединения
В следующем разделе будет продемонстрировано объединение двух коллекций в базу данных MongoDB.
Prerequisites
Как упоминалось ранее, с помощью оператора $ lookup можно сопоставить две коллекции базы данных. Итак, для выполнения этой операции вам потребуются две коллекции из базы данных.
В этом посте мы использовали » персонал » и » информация » как набор базы данных » linuxhint «. Будьте осторожны при выборе коллекции, потому что вы можете объединить только две коллекции, которые находятся в одной базе данных.
Коллекция » Staff » содержит следующие документы: указанная ниже команда используется для извлечения документов из коллекции » Staff «.
> db.staff.find().pretty()
А содержимое второй коллекции » info » отображается следующей командой:
> db.info.find().pretty()
Как объединить две коллекции в MongoDB
В этом разделе вы научитесь выполнять соединение в MongoDB. Для этого мы выполнили действие, чтобы объединить коллекцию » персонал » с коллекцией » информация «.
В приведенной ниже команде агрегатный метод выполняет оператор $ lookup для получения информации из обеих коллекций и объединяет их при выполнении следующего условия:
Если » localField » коллекции » staff » совпадает с » foreignField » коллекции » info «.
>db.staff.aggregate([
{
$lookup:
{
from: «info»,
localField: «_id»,
foreignField: «_id»,
as: «Staff_info»
}
}
])
Объединение можно увидеть в разделе вывода на вставленном ниже изображении. Мы использовали следующий ярлык, чтобы лучше понять.
Метки » Ввод » и » Выход » показывают вставленную команду и ее результат соответственно. Данные обеих коллекций после объединения также маркируются, а поле массива » Staff_info » содержит данные коллекции » info » после объединения.
Заключение
MongoDB хорошо известна благодаря обширной поддержке обработки данных внутри базы данных. Однако он не поддерживает никаких специальных методов для объединения коллекций, как в базах данных на основе SQL. В качестве альтернативы соединению MongoDB поддерживает оператор $ lookup, который можно использовать в методе агрегирования для выполнения левого соединения. В этом руководстве из серии MongoDB мы объяснили рабочий феномен оператора $ lookup в методе агрегирования. Следуя этому руководству, энтузиаст монго сможет объединить одну коллекцию с другой.