MongoDB $ Lookup

MongoDB $ Lookup

Los documentos se pasan a la tubería con múltiples operadores, como $ Match y $, existen para agregar los datos. El operador de búsqueda $ es uno de los operadores de la tubería de agregación que permite que los datos se unan a una recopilación de entrada. El operador de búsqueda de MongoDB utiliza la operación de unión externa izquierda para combinar los datos de un documento a otro. En palabras simples, el método de búsqueda $ nos permite "unir" fácilmente las diferentes colecciones dando los resultados que incluyen los campos de todas las colecciones dadas. La principal ventaja del operador de búsqueda MongoDB $ es que maneja los datos en el servidor que son mucho más rápido que ejecutar varias consultas de DB y analizar los resultados del lado del cliente. Discutiremos sobre el principio operativo de búsqueda de MongoDB $ en este artículo.

¿Cómo funciona el operador de búsqueda de MongoDB $?

Como se indicó, el operador de búsqueda $ en MongoDB nos permite combinar los documentos de diferentes colecciones dentro de la misma base de datos. El operador de búsqueda $ maneja las subcreerías no relacionadas, así como las coincidencias de igualdad. Cada coincidencia con el operador de búsqueda $ tiene una estructura diferente en la que veremos con la implementación de ejemplo. Establecemos la colección "candidatos" que utilizamos en nuestro ejemplo para realizar el operador de búsqueda $. Aquí, insertamos dos documentos con el método InsertMany () que contiene los siguientes campos:

db.Candidatos.insertMany (
[

Candidato_id: 01,
"Nombre": "Andrew",
"RollNumber": 099912,
"Prueba": "MBBS",
"AcademicStatus": ["Schoolmarks": "A", "CollegeGrades": "B"],
"Estado": "elegible"
,

Candidato_id: 02,
"Nombre": "Stella",
"RollNumber": 0012123,
"Prueba": "bds",
"AcademicStatus": ["Schoolgrades": "A+", "CollegeGrades": "A"],
"Estado": "elegible"

]
);

Los resultados de la consulta insertada deben aparecer así en la colección MongoDB:

A continuación, construimos otra colección titulada "CandidateInfo". Insertamos el documento en esta colección utilizando el método InsertMany ().

db.Candidatoinfo.insertMany (
[

"Candidato_name": "Andrew",
"Age": 27,
"Género masculino",
"Prueba": "MBBS",
"Ciudad": "California"
,

"Candidato_name": "stella",
"Age": 25,
"Género femenino",
"Prueba": "bds",
"Ciudad": "Houston"

]
);

Los resultados de agregar el documento a la colección "CandidateInfo" indican que los documentos están insertados correctamente. Ahora, podemos usar ambas colecciones para vincular con el operador de búsqueda $.

Ejemplo 1: Uso del operador de búsqueda MongoDB $ para la coincidencia de igualdad

El operador de búsqueda $ de MongoDB se emplea en este ejemplo para fusionar las operaciones en una clave de la base de datos dada y la base de datos combinada. Aquí, especificamos la consulta de coincidencia de igualdad en la colección "candidato" con el método agregado (). El método agregado () se implementa aún más con el operador de búsqueda $. El operador de búsqueda $ contiene diferentes restricciones que se requieren para combinar la colección dada.

La primera restricción desplegada es la restricción "desde" que se asigna con un nombre de la colección, "candidatoinfo", que se unirá. Luego, establecemos la restricción "Localfield" donde se asigna el nombre del campo "Nombre" del documento de la colección dada. El campo local se define como el campo en la colección local que se combinará. A continuación, definimos el atributo de Foreignfield que se especifica con el campo "candidato_name" de la colección "candidatoinfo" para fusionarse con la colección "candidato". Después de eso, la restricción "AS" se utiliza para generar la matriz de los resultados coincidentes del operador de búsqueda $.

db.Candidatos.agregar([
$ Lookup:

De: "candidatoinfo",
Localfield: "Nombre",
extranjero: "candidato_name",
AS: "candidatoinfo"


])

La salida de la consulta de búsqueda $ combina las coincidencias de la colección "candidatoinfo" a la colección "candidatos" utilizando los valores de campo "Nombre" y "Candidate_Name" en las colecciones "candidatos" y "candidato", respectivamente.

Ejemplo 2: Uso del operador de búsqueda MongoDB $ con los criterios de selección

La coincidencia de igualdad de las colecciones se logra en el ejemplo anterior. Ahora, usamos el operador de búsqueda $ con el operador condicional para unirse a las colecciones. Damos una consulta de operador de búsqueda $ en el método de agregación en la colección "candidatoinfo". Dentro del método agregado (), tenemos el operador de búsqueda $ que se especifica con las diferentes restricciones para unir las colecciones.

Primero, definimos la restricción "de" que se define con otra colección que es "candidatos". Tenga en cuenta que usamos las limitaciones "Let" y la "tubería" después de la restricción "desde" en lugar del campo local y el campo extranjero. La restricción de "let" se declara con la variable "C_AGE" que se asigna con un campo "$ edad". Se declara la variable "C_Test" que contiene el nombre del campo "$ prueba". Declaramos estas variables para recuperar los campos de los documentos en la colección combinada que se pasan a la tubería.

Después de eso, creamos el atributo de "tubería" donde se ingresan los operadores condicionales. El uso de la restricción de la tubería es ejecutar la operación de unión sobre la colección dada. Luego, la tubería está asociada con la etapa de $ coincidencia que establece aún más la etapa $ expr. La etapa $ expr compara los campos utilizando las variables de entrada dentro del atributo "let". La etapa $ expr se declara con el $ y el operador donde proporcionamos el "$ lt: [" $ edad "," $$ c_age "]" y $ eq: ["$$ c_test", "$ test" ] expresiones. Podemos comparar la colección solo de esta manera para el operador de búsqueda $. Las expresiones se especifican con el signo de doble dólar "$$" para referirse a las variables que se definen en la restricción de "let" y el signo de dólar único "$" indica un campo extranjero. El atributo de la tubería se cierra. Por último, definimos el atributo "AS" del operador de búsqueda $ para dar a la colección "candidato" para combinar con la colección "candidatoinfo".

db.Candidatoinfo.agregar([
$ Lookup:

De: "candidato",
Let: c_age: "$ edad", c_test: "$ test",
tubería: [
$ Match:
$ expr:
$ y:
[
$ lt: ["$ edad", "$$ c_age"],
$ eq: ["$$ c_test", "$ test"]
]



],
AS: "Candidatos"


]).bonito();

La siguiente salida se obtiene realizando la tubería de operador de búsqueda $ con los criterios de selección:

Ejemplo 3: Uso del operador de búsqueda MongoDB $ con el operador $ MergeObject

Los objetos $ fusion se utilizan para cambiar los documentos en la colección dada que dependen de las restricciones establecidas en $ Lookup Oeprator. Aquí, primero establecemos el operador de búsqueda $ con sus restricciones. Luego, llamamos al $ MergeObject que también establece su restricción para ejecutar la colección modificada que se devuelve del operador de búsqueda $. En la siguiente consulta, el operador de búsqueda $ se utiliza para unirse a la colección "candidato" del "candidatoinfo" utilizando el campo local y el campo extranjero como "prueba". Luego, empleamos la etapa $ reemplazo que invoca los $ MergeObjects para combinar documentos de las colecciones de "candidatos" y "candidatos".

db.Candidatos.agregado ([

$ Lookup:
De: "candidatoinfo",
Localfield: "Prueba",
Foreignfield: "Prueba",
AS: "Fromcandi"

,

$ reemplazo: newroot: $ MergeObjects: [$ ArrayElemat: ["$ fromcandi", 0], "$$ root"]
,
$ Project: "fromcandi": 0
])

Después de consultar esta operación de búsqueda $ con el $ MergeObject, tenemos los siguientes resultados:

Conclusión

El operador de búsqueda $ ayuda a identificar los datos apropiados y adquirir los resultados deseados. Implementamos tres ejemplos utilizando el operador de búsqueda $. En el primer ejemplo, utilizamos el operador de búsqueda $ para la coincidencia de igualdad. Luego, tenemos un ejemplo en el que las condiciones se utilizan para ejecutar los resultados del operador de búsqueda. También utilizamos la etapa $ MergeObjects con el operador de búsqueda $ para modificar los documentos.