MongoDB:如何确定特定值不存在

时间:2015-04-29 11:34:47

标签: python mongodb

我只能找到一些示例来查找特定键是否不存在。

我的MongoDB实例中有特定文档,其中包含以下字段:

        "actions" : [
            {
                    "date" : "2015-03-09T15:28:03Z",
                    "reason" : "",
                    "begin_date" : "2015-03-09T15:28:03Z",
                    "end_date" : "2015-03-09T15:28:03Z",
                    "action_type" : "Block",
                    "performed_date" : "2015-03-09T15:28:03Z",
                    "active" : "on",
            },
            {
                    "date" : "2015-03-09T15:28:03Z",
                    "reason" : "",
                    "begin_date" : "2015-03-09T15:28:03Z",
                    "end_date" : "2015-03-09T15:28:03Z",
                    "action_type" : "Alert",
                    "performed_date" : "2015-03-09T15:28:03Z",
                    "active" : "on",
            },
            {
                    "date" : "2015-03-09T15:28:03Z",
                    "reason" : "None",
                    "begin_date" : "2015-03-09T15:28:03Z",
                    "end_date" : "2015-03-09T15:28:03Z",
                    "action_type" : "History",
                    "performed_date" : "2015-03-09T15:28:03Z",
                    "active" : "on",
            }
    ],

现在,我正在尝试生成一个查询,以返回" action_type":" History"不存在。

我知道$ exists运算符可以告诉我" action_type"密钥不存在,但我找不到任何示例告诉我在哪里可以指定哪些值不存在。

在我的脑海里,我想说的是这样的事情(但显然这不起作用):

db.collection.find({ "actions":{"$elemMatch":{"action_type": "History"}} : { '$exists': false} } )

希望这比我要做的容易得多。

2 个答案:

答案 0 :(得分:1)

您是否真的想要检查某个值是否不合适?即密钥将始终存在,但您希望匹配的值不是“历史记录”。

如果是,那就是Not Equals运算符:

http://docs.mongodb.org/manual/reference/operator/query/ne/

答案 1 :(得分:1)

这应该有效:

db.collection.find({"actions.action_type": {"$ne": "History"}})