【发布时间】:2017-11-16 12:07:45
【问题描述】:
我正在通过我的应用程序在mongoDB 3.4 上运行以下查询。基本上,我想使用 $elemMatch
db.collectionName.find({
attributes: {
$all: [{
$elemMatch: {
"name": "manufacturer",
"value": "val1",
"status": 1
}
}, {
$elemMatch: {
"name": "model",
"value": "val2",
"status": 1
}
}]
}
})
但是,与此同时,我想运行另一个查找查询来查找上述查找条件失败的记录,甚至是 一个 $elemMatch 失败
我怎样才能做到这一点?
如果可能,我宁愿不更改要传递给 $all 的数组
【问题讨论】:
-
docs.mongodb.com/manual/reference/operator/query/not 和 de-morgan 定理(如果您的情况需要)。
-
De-Morgan 会要求我编辑数组的元素,所以我试图避免它。
$not虽然有效,所以如果您发布答案,我现在会接受。 -
不太清楚您要提出什么情况,但
$not在上下文“我认为”您的意思是不需要对数组参数进行任何更改。它只是一个“否定”,将在查询表达式中的$all之前应用。除非你的意思是别的。可以处理数据样本和预期结果。 -
**$not**不会。**De-Morgans**会。 -
显示示例。如果您认为每个元素都需要
$ne,那么您可能弄错了。这就是为什么我认为您确实需要发布一些示例数据和预期结果。我看到了$not的一个明确案例,我“认为”你的实际意思。但我的预期结果可能与您的预期不同。所以减轻困惑,向我们展示一些我们可以复制的东西。如果你这样做,它将帮助你得到正确的答案。
标签: mongodb mongodb-query