当前位置: 首页 > 知识库问答 >
问题:

如果所有子文档都通过了标准,mongoose将只获取这些文档

郗丰
2023-03-14

假设我有一个课程模式,它包含一系列问题子文档。如果课程标记为已完成,但数组中的所有问题都已删除:true

我想到了类似于

Lesson.find({is完成: true,'questions.is删除': true})

但如果至少有一个问题被删除了,这就得到了教训。我如何断言所有问题的条件?

共有1个答案

郁隐水
2023-03-14

您不能使用点表示法,因为它会使数组变平,您可以使用$expr,这允许使用聚合运算符,如$reduce。

现在我们可以迭代数组,看看所有文档是否都满足条件,如下所示:

db.collection.find({
  isComplete: true,
  $expr: {
    $eq: [
      {
        $reduce: {
          input: "$questions",
          initialValue: 0,
          in: {
            $sum: [
              "$$value",
              {
                $cond: [
                  {
                    $ne: [
                      "$$this.isDeleted",
                      true
                    ]
                  },
                  1,
                  0
                ]
              }
            ]
          }
        }
      },
      0
    ]
  }
})

蒙戈游乐场

 类似资料:
  • 我刚刚被这个问题缠住了。我有两个猫鼬模式: 问题是,如何从每个父文档中获取所有子文档(在这种情况下,对象)?假设我有一些数据: 我想在一个查询中检索所有18岁以上的儿童。有可能吗?每一个回答都将不胜感激,谢谢!

  • 我现在有一个firestore,看起来像这样: 我使用的是,我试图获取“报告”集合中的所有文档。 我可以得到一个报告: 但我无法得到整个子集合 这可能吗?我是新手,所以这可能是一个愚蠢的问题。 谢谢 编辑控制台中收到的错误消息是: 我不确定权限,我没有访问权限,但如果是权限问题,我很困惑,我可以从集合中获取一个文档,但找不到获取所有文档的方法

  • 我有一个用于Express/Mongo健康跟踪应用程序的后端API。 每个用户都有一个数组,子文档包含一个值、一个单位和记录的日期。如果未指定单元,则默认为。 每个用户还有一个defaultUnit字段,可以为该用户指定默认单位。如果该用户在未指定单位的情况下发布称重输入,则称重输入应使用用户的默认单位(如果存在),否则默认为。 该逻辑的正确位置在哪里? 我可以在我的WeighInsControl

  • 本文向大家介绍你有去看过或者了解过css的标准文档吗?相关面试题,主要包含被问及你有去看过或者了解过css的标准文档吗?时的应答技巧和注意事项,需要的朋友参考一下 当然,CSS 中可以研究的太多了,比如 css2 的层叠上下文极其诡异,比如 body 的默认值与普通 dom 的不同,flex-shrink 的计算规则等等,虽然看得很吃力,但对研究很有帮助。

  • 我想从一个集合中得到所有的文件,然后用它们,得到他们的身份证。这里我的集合如何是用户集合,它只是一个集合和多个文档。我试了一下,但不起作用: 更新

  • 我有一份这样的文件: 我想通过将其与数量字段(2*800)相乘来更新价格字段,其中的结果将更新/分配给价格。(对于本例,价格更新为1600)。 更新后的文档: 我的选择查询如下: 我怎样才能做到这一点?