我只能找到一些示例来查找特定键是否不存在。
我的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} } )
希望这比我要做的容易得多。
答案 0 :(得分:1)
您是否真的想要检查某个值是否不合适?即密钥将始终存在,但您希望匹配的值不是“历史记录”。
如果是,那就是Not Equals运算符:
答案 1 :(得分:1)
这应该有效:
db.collection.find({"actions.action_type": {"$ne": "History"}})