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
, $or
y $not
MongoDB, 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