Adding a field in Document in MongoDb

You need to use the $ positional operator

catalogues.update_one({'services._id': ObjectId(x_id)}, {'$set': {'services.$.age': '30'}})

Full example:

from pymongo import MongoClient
from bson import ObjectId
import pprint

db = MongoClient()['mydatabase']
catalogues = db.catalogues

catalogues.insert_one({
    '__v': 78,
    '_id': ObjectId('5de4218d6a2be815b9e215e1'),

    'services': [
        {
            '_id': ObjectId('5de4218e6a2be815b9e2186d'),
            'name': 'shivam'
        },

        {
            '_id': ObjectId('5de4218e6a2be815b9e2181e'),
            'name': 'Shivi'
        }
    ]
})

x_id = '5de4218e6a2be815b9e2181e'

catalogues.update_one({'services._id': ObjectId(x_id)}, {'$set': {'services.$.age': '30'}})

result:

{'__v': 78,
 '_id': ObjectId('5de4218d6a2be815b9e215e1'),
 'services': [{'_id': ObjectId('5de4218e6a2be815b9e2186d'), 'name': 'shivam'},
              {'_id': ObjectId('5de4218e6a2be815b9e2181e'),
               'age': '30',
               'name': 'Shivi'}]}

CLICK HERE to find out more related problems solutions.

Leave a Comment

Your email address will not be published.

Scroll to Top