【问题标题】:Problems with Deleting Elements of Subdictionary in Pymongo MongoDbPymongo MongoDb中删除子目录元素的问题
【发布时间】: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”)
  • 感谢您的帮助!

标签: python mongodb pymongo


【解决方案1】:

我的代码中有 2 个问题:

  1. 根据帖子,我没有正确访问条目:

MongoDB - finding entries using a nested dictionary

  1. 我用点保存了我的字值。因此我允许 mongodb 用点存储。在这种情况下,无法正确访问条目。

现在我刚刚添加了一个新的正则表达式:

regex3 = re.compile(r'[,.]') re.sub(regex3,'',words.decode_contents()))

我认为光标只是指向数据的预期位置。即使该位置存在与否。你不会得到错误或类似的东西。与 DeleteResult 相同。

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2020-10-12
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多