我在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.原因是我想删除这些条目,当它们代表的文件不再存在时,架构可供我使用,我可以更改它以使这种搜索更加清晰,
您可以在查询键中使用点表示法来执行此操作,使用$exists
运算符来检查是否存在:
db.test.find({'files.IyzkmGh4YGD61Tc3TJjaEY17hDldH': {'$exists': 1}})
要查找包含这些文件的所有文档并将其删除:
db.test.update( {'files.IyzkmGh4YGD61Tc3TJjaEY17hDldH': {'$exists': 1}}, {'$pull': {'files': {'IyzkmGh4YGD61Tc3TJjaEY17hDldH': {'$exists': 1}}}}, multi=True)