mongodb - MongoDB $或表现得像 $and
问题描述
我正在尝试计算具有非空features
数组或非空description
字符串的文档数,如下所示:
collection.find({
$or: [{
features: {$exists: true, $not: {$size: 0}},
description: {$exists: true, $ne: ""}
}],
}).count()
奇怪的是(对我来说),将第二个表达式添加到$or
数组中会减少匹配的数量。556 个文档具有非空features
数组,294 个文档具有非空描述。在 214 个匹配项中使用$or
结果将两者结合起来,它们似乎都有描述和特征。我在这里想念什么?
解决方案
这是因为您的 2 个条件位于 $or 数组的同一项目中。所以基本上,您正在过滤满足这两个条件的文档。我认为第二个条件应该在数组的第二项中,如下所示:
collection.find({
$or: [
{
features: {$exists: true, $not: {$size: 0}},
},
{
description: {$exists: true, $ne: ""}
}
],
}).count()
推荐阅读
- javascript - 检查 Debug Duplicate Classes Failed React Native
- angular - 销毁由 Renderer2 附加的元素
- javascript - 如何使用 for 循环对更多数字重复此过程?
- python - 如何在不使用包的情况下将BERT模型下载到本地?
- java - 尝试使用来自多个表的 spring data jpa 从数据库中获取自定义对象数据
- javascript - 按名称更新不受控制的输入
- android - FFmpeg 只显示输入文本的数字(没有字符,只有数字)错误=13,权限被拒绝
- javascript - 内部使用ajax时函数未定义错误
- bash - 这个 bash 命令在 Makefile 中没有正确运行
- ethereum - 为什么我的 truffle 部署由于资金不足而失败?