根据子文档

时间:2018-02-09 20:51:40

标签: bash mongodb

我对Mongo很新,但我有SQL经验,所以我试图围绕这个概念。我试图根据子文档的结果删除整个文档。

文档/行看起来接近以下内容:

{
    "_id" : ObjectId("5a7e04e3809303035bf6437a"),
    "receivedTime" : ISODate("2018-02-09T20:30:27.118Z"),
    "status" : "NORMALIZED",
    "originalHeaders" : {
            "name" : "My Alert Name",
            "description" : null,
            "version" : 0,
            "severity" : 3
    },
    "partOfIncident" : false
}

我想删除所有名称为“我的警报名称”的文档。我通过从bash脚本调用它来尝试类似下面的内容。这是执行变量替换后的命令:

++ mongo admin -u admin -p password --eval 'db.getSiblingDB("database_name").collection.deleteMany({originalHeaders: {name: "I ALERT EVERYTHING"} })'

调用后,没有删除任何内容。关于如何实现我的最终目标的任何指示将不胜感激。我想可以通过查找运行并保存所有节点_id来运行以进行删除,但这听起来非常低效。

1 个答案:

答案 0 :(得分:1)

访问嵌套字段时,您需要使用dot表示法。

db.collection_name.deleteMany( { "originalHeaders.name" : "My Alert Name" } )

这将删除originalHeaders.name = "My Alert Name"

的所有文件