python - 使用 pyMongo 和 MongoEngine 从 MongoDb 列表中删除对象及其索引?
问题描述
我的 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 = )
但我无法让它工作。你能帮助我吗?
解决方案
MongoDB 不支持在单个操作中删除特定的列表元素(除非它是第一个或最后一个元素 - using $pop
)。
但是pythonpop
确实允许这样做,所以你可以这样做:
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]}
推荐阅读
- javascript - 在 Iframe 中加载 XSLTProcessor::transformToDocument() 的输出时未执行 Javascript
- javascript - 为什么 emscripten 似乎此代码存在内存泄漏
- s4sdk - DestinationAccessException 在 Cloud Foundry 环境中使用 S4 SDK 执行 ODATA V2 调用时出错
- makefile - make - 仅在需要时创建中间文件
- docker - Kafka Producer 中的代理列表参数错误
- xamarin - Action.Picker returns invalid/wrong Uri (How to get path or byte[] from multiple picked gallery img)
- javascript - 使用 Javascript 动态创建行,然后发送到 Flask。没有信息被传输
- php - codeigniter中的ftp连接问题
- reactjs - Eslint airbnb 和 prettier config 删除文本中点后的所有空格
- c# - 处理 Web api 的会话