如何在mongodb集合中搜索嵌套在数组中的字典键

 --cathrine-- 发布于 2023-02-09 13:55

我在mongodb数据库集合中有一些数据(我知道哪个集合只能查看集合),文档看起来像这样:

{ "_id" : ObjectId("52a93577dadf672b96062729"), 
  "owner" : "user1", 
  "files" : [  
              {  "IyzkmGh4YGD61Tc3TJjaEY17hDldH" : "rws" } 
            ] 
}
{ "_id" : ObjectId("52a92f43dadf672b96062725"), 
  "owner" : "user2", 
  "files" : [    
              {       "tUI7RtvpHZklptvHVYssamlgHP6xs" : "rws" },
              {       "RsxRDQdXmHgmSLhMJ8tPxILxarruK" : "rws" },    
              {       "IyzkmGh4YGD61Tc3TJjaEY17hDldH" : "rw" },      
              {       "YA4to7HaB5Gm6JuZrwYrFit7IzvgO" : "rws" } 
           ] 
}

我试图想办法找到在其中的文件数组中具有特定字典键的所有文档

对于样本数据,如果我使用字符串进行搜索IyzkmGh4YGD61Tc3TJjaEY17hDldH,id就像两个样本一样匹配,因为它们都在其文件列表中有一个带有该键的字典,我将如何执行此查询?我正在使用python电机访问mongodb.原因是我想删除这些条目,当它们代表的文件不再存在时,架构可供我使用,我可以更改它以使这种搜索更加清晰,

1 个回答
  • 您可以在查询键中使用点表示法来执行此操作,使用$exists运算符来检查是否存在:

    db.test.find({'files.IyzkmGh4YGD61Tc3TJjaEY17hDldH': {'$exists': 1}})
    

    要查找包含这些文件的所有文档并将其删除:

    db.test.update(
        {'files.IyzkmGh4YGD61Tc3TJjaEY17hDldH': {'$exists': 1}},
        {'$pull': {'files': {'IyzkmGh4YGD61Tc3TJjaEY17hDldH': {'$exists': 1}}}},
        multi=True)
    

    2023-02-09 13:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有