【问题标题】:Removing an object from a list in MongoDb with its index using pyMongo and MongoEngine?使用 pyMongo 和 MongoEngine 从 MongoDb 列表中删除对象及其索引?
【发布时间】:2021-03-30 00:31:15
【问题描述】:

我的 MongoDB 数据库中有一个文档,其中包含参考字段列表:

class US(Document):
    name = StringField(required=True, max_length=200)
    timestamp = StringField(required=True, max_length=50)
    list = ListField(ReferenceField(Stk))

现在,我想从该列表中删除某个索引 (i=15)。我尝试了类似的东西

US.objects(id=us.id).update(pull__list = )

但我无法让它工作。你能帮帮我吗?

【问题讨论】:

    标签: python mongodb pymongo mongoengine


    【解决方案1】:

    MongoDB 不支持在单个操作中删除特定列表元素(除非它是第一个或最后一个元素 - 使用 $pop)。

    但是python的pop确实允许这样做,所以你可以这样做:

    from pymongo import MongoClient
    
    db = MongoClient()['mydatabase']
    
    db.mycollection.insert_one({'array': [x for x in range(20)]})
    
    document = db.mycollection.find_one()
    array = document['array']
    array.pop(15)  # Remove element at index 15
    
    db.mycollection.update_one({'_id': document['_id']}, {'$set': {'array': array}})
    
    print(db.mycollection.find_one())
    

    给予:

    {'_id': ObjectId('5fde48b597315f732fb0a1d1'), 'array': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-26
      • 2021-10-28
      • 2022-01-21
      • 2013-10-24
      • 2014-09-23
      • 2019-07-26
      • 2020-02-26
      • 2020-08-13
      相关资源
      最近更新 更多