【问题标题】:Adding a field in Document in MongoDb在 MongoDb 的 Document 中添加一个字段
【发布时间】:2020-11-06 03:21:13
【问题描述】:
 database = {
  '__v': 78,
  '_id': ObjectId('5de4218d6a2be815b9e215e1'),

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

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




catalogues.update_one({'services._id': ObjectId(id)},{'$set': {'age': 
   "30"}},False,True) 
    

这是 mongodb.collection 中的文档之一。如何在 pymongo 的服务(列表/数组)中放置的字典中添加字段“年龄”并在数据库中更新。

【问题讨论】:

  • 这能回答你的问题吗? Inserting data to nested array in mongodb
  • 我实际上是在 pymongo 中寻找解决方案。您提供的链接是 javascript。
  • 请求应该是一样的,因为它都是一个 MongoDB 查询
  • 但它没有。这个方法我试过了。

标签: mongodb pymongo


【解决方案1】:

您需要使用$ positional operator

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

完整示例:

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'}})

结果:

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

【讨论】:

    猜你喜欢
    • 2016-05-16
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多