mongodb - MongoDb - 使用多个和条件表达式查找计数
问题描述
以下查询为我提供了评论的所有投票数。
$lookup: {
from: "votesComments",
as: "commentVotes",
let: {
commentI: "$_id"
},
pipeline: [
{
$match: {
$expr: {
$eq: [
"$commentId",
"$$commentI"
],
},
}
},
{
$count: "votesTotal"
},
]
}
我正在寻找添加另一个 AND 条件来查找有多少票在“up”字段中有“1” - 这将使我计算所有 up 票。我尝试了下面的查询,但不起作用。
是否有一个简短的查询来获取所有评论的计数,其中 up 字段中的 1 为“upTotal”,并且还获取 down 字段中的所有 1 的计数,这将是 downvotes 的总数?
$match: {
$and:[
{
$expr: {
$eq: [
"$commentId",
"$$commentI"
],
},
$expr: {
$eq: [
"$up",
1
],
},
},
]
}
解决方案
我用过并且在错误的地方。然而,这不是找到上下投票的最佳方式,因为它需要 2 场比赛。
这不是我确定的最佳答案。
$match: {
$expr: {
$and: [
{
$eq: [
"$commentId",
"$$commentI"
],
},
{
$eq: [
"$up",
1
],
}
]
},
}
推荐阅读
- symfony - Monolog stdout/stderr 记录到 Docker 中的当前终端进程
- sql - Oracle - 选择查询中的 XMLType 列比较
- csv - 如何使用 JUnit 5 的 @CsvFileSource 忽略行
- java - Java Batch Compiler - 通过命令行选项忽略所有警告
- r - 在 LaTeX 中更改 R knitr 中的关键字突出显示
- javascript - 将 PHP 变量传递给外部 JavaScript 文件
- scala - 替换深层嵌套模式 Scala Spark Dataframe 中的值
- swift - 为什么我的收藏视图单元格颜色选择不起作用
- selenium - 如何启动我的网页并使用 Selenium 进行测试
- scala - Spark 2.0-2.3 数据集 groupByKey 和 mapGroups