下面是一个组架构:

GroupSchema{
    membersLimit: Number,
    listOfStudents: [String]
}

我想找出学生人数少于membersLimit人的所有小组.

我试着回答下面的问题

await Group.find({
    membersLimit: { $gt: 'listOfStudents'.length },
})

该查询返回学生少于14的文档,即长度为listOfStudents的文档.

我也试过这个

await Group.find({
    listOfStudents: { $size: { $lt: 'membersLimit' } },
})

此查询返回以下错误

error The expression evaluated to a falsy value:

  assert.ok(!isNaN(val))

有没有一种方法可以用单个查询来做到这一点?

推荐答案

您需要使用$expr来比较数组大小和字段,如下所示:

db.collection.find({
  $expr: {
    $gt: [
      "$membersLimit",
      {
        "$size": "$listOfStudents"
      }
    ]
  }
})

playground link号.

Javascript相关问答推荐

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

如何找出摆线表面上y与x相交的地方?

如何让npx在windows中运行js脚本?

在HTML语言中调用外部JavaScript文件中的函数

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

如何在 Select 文本时停止Click事件?

自定义确认组件未在vue.js的v菜单内打开

如何利用CSS中的隐藏元素实现平滑扩展和防止网格行间隙

<;img>;标记无法呈现图像

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

如何在FiRestore中的事务中使用getCountFromServer

如何使用Cypress在IFRAME中打字

连续添加promise 时,如何在所有promise 都已结算时解除加载覆盖

Django模板中未加载JavaScript函数

如何向内部有文本输入字段的HTML表添加行?

Refine.dev从不同的表取多条记录

如何在css中裁剪成一定Angular 的圆的一部分,而不需要复杂的多边形

浮动标签效果移除时,所需的也被移除

JS/css:将数字输入的S函数和可调整大小的元素S函数绑定在一起

使用重新 Select 和对象理解 Select 器备忘