MongoDB Python | Вставить и обновить данные

Опубликовано: 14 Июля, 2021

Предварительные требования: основы MongoDB Python
Сначала мы поймем, как вставить документ / запись в коллекцию базы данных. Затем мы будем работать над тем, как обновить существующий документ в MongoDB, используя библиотеку pymongo в python. Команды обновления помогают нам обновить данные запроса, уже вставленные в коллекцию базы данных MongoDB.

Вставить данные

Сначала мы вставим данные в MongoDB.

  • Шаг 1 - Установление соединения : номер порта По умолчанию: 27017
     conn = MongoClient ('localhost', номер порта)

    При использовании номера порта по умолчанию, например 27017. Альтернативный метод подключения:

     conn = MongoClient ()
  • Шаг 2 - Создайте базу данных или переключитесь на существующую базу данных:
     db = conn.dabasename

    Создать коллекцию или переключиться на существующую коллекцию:

     collection = db.collection_name
  • Шаг 3 - Вставка: для вставки данных создайте объект словаря и вставьте данные в базу данных. Метод, используемый для вставки данных:
     insert_one () или insert_many ()

    После вставки, чтобы найти документы внутри коллекции, мы используем команду find (). Метод find () выдает запрос на получение данных из коллекции в MongoDB. Все запросы в MongoDB имеют объем единой коллекции.
    Примечание. ObjectId отличается для каждой записи в коллекции базы данных.
    Давайте разберемся с вставкой данных с помощью кода: -




    # Python code to illustrate
    # inserting data in MongoDB
    from pymongo import MongoClient
    try :
    conn = MongoClient()
    print ( "Connected successfully!!!" )
    except :
    print ( "Could not connect to MongoDB" )
    # database
    db = conn.database
    # Created or Switched to collection names: my_gfg_collection
    collection = db.my_gfg_collection
    emp_rec1 = {
    "name" : "Mr.Geek" ,
    "eid" : 24 ,
    "location" : "delhi"
    }
    emp_rec2 = {
    "name" : "Mr.Shaurya" ,
    "eid" : 14 ,
    "location" : "delhi"
    }
    # Insert Data
    rec_id1 = collection.insert_one(emp_rec1)
    rec_id2 = collection.insert_one(emp_rec2)
    print ( "Data inserted with record ids" ,rec_id1, " " ,rec_id2)
    # Printing the data inserted
    cursor = collection.find()
    for record in cursor:
    print (record)

    Выход:

    Подключился успешно !!!
    Данные вставлены с идентификаторами записей    
    {'_id': ObjectId ('5a02227b37b8552becf5ed2a'), 
    'name': 'Mr.Geek', 'eid': 24, 'location': 'delhi'}
    {'_id': ObjectId ('5a02227c37b8552becf5ed2b'), 'name':
    'Мистер Шаурья', 'ид': 14, 'местоположение': 'Дели'}
    

Обновление данных в MongoD B

Используемые методы: update_one () и update_many ()
Пройденные параметры:
+ документ с фильтром, чтобы он соответствовал документам для обновления
+ документ обновления, чтобы указать модификацию, которую нужно выполнить
+ необязательный параметр upsert

После вставки данных в MongoDB давайте обновим данные сотрудника с идентификатором: 24




# Python code to illustrate
# updating data in MongoDB
# with Data of employee with id:24
from pymongo import MongoClient
try :
conn = MongoClient()
print ( "Connected successfully!!!" )
except :
print ( "Could not connect to MongoDB" )
# database
db = conn.database
# Created or Switched to collection names: my_gfg_collection
collection = db.my_gfg_collection
# update all the employee data whose eid is 24
result = collection.update_many(
{ "eid" : 24 },
{
"$set" :{
"name" : "Mr.Geeksforgeeks"
},
"$currentDate" :{ "lastModified" : True }
}
)
print ( "Data updated with id" ,result)
# Print the new record
cursor = collection.find()
for record in cursor:
print (record)

Выход:

Подключился успешно !!!
Данные обновлены с идентификатором 
{'_id': ObjectId ('5a02227b37b8552becf5ed2a'), 
'name': 'Mr.Geeksforgeeks', 'eid': 24, 'location': 
'delhi', 'lastModified': datetime.datetime (2017, 11, 7, 21, 19, 9, 698000)}
{'_id': ObjectId ('5a02227c37b8552becf5ed2b'), 'name': 
'Мистер Шаурья', 'ид': 14, 'местоположение': 'Дели'}

Чтобы узнать количество обновленных документов или записей в коллекции, используйте.

 печать (результат.matched_count)

Здесь вывод будет 1.