【发布时间】:2020-12-12 09:23:52
【问题描述】:
我有几个小时的问题,但还没有找到答案。我的问题是我想删除子字典中的键/值对。
MongoDB 的结构如下:
'_id' : objectId
'title: 'title'
'words': {
'word1' : [pos0,pos1,pos2,pos3],
'word2' : [pos0,pos1,pos2,pos3],
.
.
.
}
当我运行这个查询时:
client = pymongo.MongoClient(f"MONGODB_CONNECTION_LINK")
db = client.database
cursor = db['templates'] #OR cursor = db['templates'][index]
query = { 'words': { f'{word}' : f'{pos}' }}
x = cursor.delete_many(query)
并打印出光标,我将返回 deleteResult 对象所在的位置。此外,当我删除它们并打印出退货时,它说有些东西被删除了。但是当我去我的数据库时它仍然在那里。 索引是我要从中删除的对象。 Like Index[0] 应该是数据库中的第一个 Object。但是当我尝试删除有或没有索引时,结果相同。
顺便说一句,还尝试了一些其他查询,但可能不是正确的。
感谢大家的帮助
[
【问题讨论】:
-
您在查询中使用 f 字符串是否有原因?您是否在数据库端尝试过查询?
-
我使用 f-strings 因为我调用函数动态并且只想删除某些特定值。我使用的是 mongodb 地图集,所以没有在服务器端尝试过,但我确定这是一个语法问题。能够删除整个“单词”字段。我只是想知道 mongodb 正在删除什么。根据文档,应该给我错误的回复或无。
-
如果您确定这是句法问题,那么我认为提供您的自定义函数将帮助其他人找出错误。
-
我猜它的查询有问题.. 我发送给查询的数据是正确的.. 我仔细检查了。集合是模板。光标位于“templates.0.words”)
-
感谢您的帮助!