Consultas anidadas en PyMongo

MongoDB es una base de datos orientada a documentos NoSQL. No le da mucha importancia a las relaciones o también se puede decir que es libre de esquemas.

PyMongo es un módulo de Python que se puede usar para interactuar entre la base de datos mongo y las aplicaciones de Python. Los datos que se intercambian entre la aplicación Python y la base de datos mongo están en formato JSON binario.

Consultas anidadas en PyMongo

Para obtener un registro particular del documento MongoDB, la consulta juega un papel importante. Es necesario obtener los datos correctos lo antes posible para tomar la decisión correcta. Estas son algunas de las múltiples técnicas de solicitud de consultas.

Operadores de consulta en PyMongo

Para usar los operadores $and, $ory $notMongoDB, la clave del diccionario externo debe ser uno de los operadores de consulta; y los parámetros del diccionario deben estar en una lista de Python y esa lista de Python debe ser el valor de la clave.

Sintaxis:

query = { 
          '$and' : [
               { operand_query_1},
               { operand_query_2} 
                   ]
         }

Ejemplo 1: Cree una colección llamada conferenciantes y recupérela usando find().

import pprint
from pymongo import MongoClient
  
  
client = MongoClient()
  
Database = client["GFG"]
lecturers = Database["lecture"]
  
lecturers.insert_many([
   {"l_id":56, "d_id":1, "salary":50000},
   {"l_id":57, "d_id":3, "salary":40000},
   {"l_id":58, "d_id":4, "salary":90000},
   {"l_id":59, "d_id":2, "salary":50000},
   {"l_id":52, "d_id":1, "salary":70000},
   {"l_id":53, "d_id":5, "salary":30000}
])
  
# retrieving the documents
for x in lecturers.find():
    pprint.pprint(x)

Producción :

Consulta 1: Muestre los registros de los profesores con un salario inferior a 50000 y organícelos en orden ascendente.

# lecturer records with salary less 
# than 50000 and arrange in ascending order.
pprint.pprint(list(lecturers.find({"salary":
                                  {'$lt':50000}}).sort('salary', 1)))

Producción :

Consulta 2: Mostrar registros de profesores con un salario superior a 40000 en department_id 1 y ordenarlos según su salario en orden descendente.

# lecturer records with salary greater than 40000
# in department_id 1 and sort according to their 
# salary in descending order.
pprint.pprint(list(lecturers.find({'$and':
                                   [{"d_id":1},
                                    {"salary":
                                     {'$gte':50000}}]}).sort("salary", -1)))

Producción :

Ejemplo 2: Cree una colección llamada libros y recupérela usando find().

import pprint
from pymongo import MongoClient
import datetime
  
  
client = MongoClient()
Database = client["GFG"]
books = Database["book"]
  
books.insert_many([
    {"author":"Samsuel", "book_id":54, "ratings":3,
     "publish":datetime.datetime(1999, 12, 6)},
      
    {"author":"Thomson", "book_id":84, "ratings":4,
     "publish":datetime.datetime(1996, 7, 12)},
      
    {"author":"Piyush Agarwal", "book_id":34, "ratings":1,
     "publish":datetime.datetime(2000, 9, 6)},
      
    {"author":"Shreya Mathur", "book_id":12, "ratings":2, 
     "publish":datetime.datetime(2017, 8, 8)},
      
    {"author":"Antony Sharma", "book_id":98, "ratings":4, 
     "publish":datetime.datetime(2003, 11, 5)},
])
  
# retrieving the documents
for x in books.find():
    pprint.pprint(x)

Producción :

Consulta 1: muestra el registro de libros con calificaciones superiores a 3 publicados después de 2000.

# books with ratings greater than 3 published after 2000
pprint.pprint(list(books.find({'$and':
                               [{"ratings":
                                 {'$gt':3}},
                                {"publish":
                                 {'$gt':datetime.datetime(2000, 12, 31)
                                 }
                                }
                               ]
                              }
                             )
                  )
             )

Producción :

Consulta 2: Mostrar el registro de los libros con rating mayor a 1 y publicados entre el año 1999 y 2016, ordenados en orden decreciente.

# between 1999-2016
query ={'$and':
        [{"publish":
          {'$gte':datetime.datetime(1999, 1, 1)}}, 
         {"publish":
          {'$lte':datetime.datetime(2016, 12, 31)}}]}
  
# books with ratings greater than 1
# and published between the year 
# 1999-2016, sort in decreasing order.
pprint.pprint(list(books.find({'$and':
                               [{"ratings":
                                 {'$gt':1}},
                                query]}).sort("publish", -1)))

Producción :

Publicación traducida automáticamente

Artículo escrito por soniyanagaraj30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *