Mongoose 查找 array.length 大于 0 的所有文档并对数据进行排序

2024-05-14

我正在使用 mongoose 对 MongoDB 执行 CRUD 操作。这就是我的架构的样子。

var EmployeeSchema = new Schema({
      name: String,
      description: {
        type: String,
        default: 'No description'
      },
      departments: []

    });

每个员工可以属于多个部门。 Departments 数组将类似于 [1,2,3]。在这种情况下,departments.length = 3。如果员工不属于任何部门,则departments.length将等于0。

我需要找到 EmployeeSchema.departments.length > 0 的所有员工,并且如果查询返回超过 10 条记录,我只需要获取具有最大部门数的员工。

是否可以使用 Mongoose.find() 来获得所需的结果?


假设你的模型被称为Employee:

Employee.find({ "departments.0": { "$exists": true } },function(err,docs) {

})

As $exists http://docs.mongodb.org/manual/reference/operator/query/exists/要求0数组的索引,这意味着它里面有一些东西。

这同样适用于最大数量:

Employee.find({ "departments.9": { "$exists": true } },function(err,docs) {

})

因此数组中至少需要有 10 个条目才能匹配。

实际上,您应该记录数组的长度并更新$inc每次添加一些东西。然后你可以这样做:

Employee.find({ "departmentsLength": { "$gt": 0 } },function(err,docs) {

})

在您存储的“departmentsLength”属性上。该属性可以被索引,这使得它更加高效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose 查找 array.length 大于 0 的所有文档并对数据进行排序 的相关文章

  • 如何在 NextJS 中记录所有路由

    我对 NextJS 非常陌生 我目前有一个非常简单的应用程序 它提供少量页面 如果路由不存在 则返回 404 页面 我想记录每个请求 包括不存在的页面并返回 404 页面 我正在 docker 容器内运行该应用程序 或者我希望将日志写入标准
  • 使用 Node.js 的前端 javascript 框架 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在浏览器中实现HTTP/2流连接?

    如今 HTTP 2 的性能正在不断提高 最新版本的 Node js 很好地支持了 HTTP 2 https nodejs org api http2 html https nodejs org api http2 html 但我不知道如何在
  • 如何在Sequelize中配置一对多关系?

    我目前正在使用 Express 和 Sequelize MySQL 想知道解决这个问题的最佳方法是什么 如果这是一个基本问题 我很抱歉 因为我对 Sequelize 甚至 SQL 数据库都很陌生 我有一个模型User像这样 export d
  • Jade - 从不同目录加载模板

    我正在尝试处理 Peepcode 的 Node js Full Stack 视频 他们似乎使用的是旧版本的express jade 没有提到使用块 扩展来渲染布局 应用程序中使用的设置是有一个为所有子应用程序加载的 views layout
  • 无法在 Sequelize 迁移中执行原始查询

    我正在尝试使用 Sequelize 迁移更新我的数据库 因此我尝试编写这样的 Sequelize 迁移 use strict module exports up queryInterface Sequelize migration gt q
  • React Native 入门项目捆绑失败并出现意外令牌错误

    我正在尝试使用以下说明创建我的第一个适用于 Android 的 React Native 应用程序https facebook github io react native docs getting started html https f
  • mongodb-org 与 mongodb-10gen-server 冲突

    我在 CentOS 上使用 yum 安装 Mongo 时遇到问题 我已经关注了这些说明 http docs mongodb org manual tutorial install mongodb on red hat centos or f
  • Node.js 中的 JSON Zip 响应

    我对 node js 还很陌生 我正在尝试发回包含 JSON 结果的 zip 文件 我一直在尝试弄清楚如何去做 但还没有达到预期的结果 我正在使用 NodeJS ExpressJS LocomotiveJS Mongoose 和 Mongo
  • npm 错误! asyncWrite 不是一个函数

    npm 安装 g firebase tools npm 错误 asyncWrite 不是一个函数 npm 错误 pna nextTick 不是函数 npm 错误 此运行的完整日志可以在以下位置找到 npm 错误 home developer
  • mongod 和 mongos 之间的确切区别是什么

    当我查看 MongoDB 文档时 我发现了两个不同的术语mongod and mongos 启动服务器时 我正在使用 mongod dbpath
  • node-postgres 不会插入数据,但也不会抛出错误

    我正在使用节点 postgres https github com brianc node postgresnode js 的模块 我在插入数据时遇到问题 功能 function addItems listId listItems hand
  • 猫鼬递归填充

    我已经搜索了一段时间 但没有找到任何好的答案 我有n deep我存储在数据库中并且想要填充的树所有的父母所以最后我得到了完整的树 node parent parent parent 到目前为止 我已达到 2 级 正如我提到的 我需要达到 2
  • 将 JSON var 从路由传递到 ejs

    我在express EJS中有一些代码 1 在 app js 中 创建 mongo 集合对象 app locals userCollection db get userData 2 在user js快速路由文件中 我从这个数据库连接获取数据
  • 如何更新 mongodb 中的字符串字段并操作字符串值?

    我有一个 MongoDB 集合 其中包含一些文档 其中一个字段名为 Personal FirstName 另一个字段名为 Personal Surname 有些文件很混乱 两个字段中都有人的名字和姓氏 例如 有些文档的 Personal F
  • 将缓冲区数据转换为图像

    我如何将此缓冲区数据转换为图像 以便当循环结果并将其呈现在 img src 中时 它将呈现为用户可以看到的图像 我正在使用 ejs 来渲染它 span img class user with avatar src gt span 当我 co
  • 如何 $filter where 条件与数组匹配?

    在 lookup 之后 我将得到一个名为 lastViewed 的连接 如下所示 id 5955ea4fd8099718330ab191 lastViewed id ObjectId 595218a7d346d27fb0bc1705 use
  • 可以模拟多个并发连接来测试 Nodejs 应用程序

    我有一个简单的node js socket io websockets 应用程序运行 localhost 我想看看它可以处理多少并发连接 是否可以在本地主机本身上模拟多个并发用户 这是我使用 socket io client 的半生尝试 f
  • 迁移后Mongodb数据文件变小

    在我的第一台服务器上我得到 root prod du hs var lib mongodb 909G var lib mongodb 迁移后this带有 mongodump mongorestore 的数据库 在我的第二台服务器上我得到 r
  • node.js、vue.js 和express.js 堆栈开发

    我正在尝试使用 Linux 上的 Visual Studio Code IDE 使用 vue js express js 和 node js 创建一个 Web 应用程序 根据网上的一些文档 我读到安装 vue js 后 可以创建一个vue

随机推荐

  • Git 不断提示我输入密码

    我已经使用 Git 一段时间了 但是不断要求输入密码开始让我感到厌烦 我使用的是 Mac OS X 和 GitHub 并且按照 GitHub 的说明设置了 Git 和我的 SSH 密钥设置 Git 页面 http help github c
  • 为什么 *(int*)0=0 不会导致访问冲突?

    出于教育目的 我正在编写一组导致 C 中运行时异常的方法 以了解所有异常是什么以及导致它们的原因 现在 我正在修改程序 导致AccessViolationException 对我来说 最明显的方法是写入受保护的内存位置 如下所示 Syste
  • 使用 Windows 命令行连接文本文件,删除前导行

    我需要连接一些相对较大的文本文件 并且更喜欢通过命令行来完成此操作 不幸的是我只有Windows 无法安装新软件 type file1 txt file2 txt gt out txt 允许我几乎得到我想要的 但我不希望 file2 txt
  • 在 Visual Studio 2013 中更改 TFS 源代码管理映射

    我有多个先前映射到托管 TFS 的解决方案 他们的本地映射也已定义 并且所有源代码都是本地最新的 此后我停止了 TFS 订阅并开始使用 Visualstudio com 作为我的 TFS 服务器 我进入其中一个解决方案 从解决方案中删除 v
  • Django 1.7 应用程序配置导入错误:没有名为 appname.apps 的模块

    我正在尝试按照以下文档为我的一个名为 文章 的 Django 应用程序设置自定义应用程序配置https docs djangoproject com en dev ref applications https docs djangoproj
  • 如何在android中的谷歌地图上聚焦标记

    我只是想知道我们是否可以关注 Android 应用程序中添加的标记 如果是 怎么办 或者有没有其他方法可以完成这项任务 可以说我使用下面的代码添加了一个标记 map addMarker new MarkerOptions title tit
  • StackExchange.Redis Get 函数抛出 TimeoutException

    我在用着StackExchange Redis与 C 和StackExchangeRedisCacheClient Get函数抛出以下异常 myCacheClient Database StringGet txtKey Text myCac
  • ServiceStack自定义用户身份验证

    有谁有一个关于如何按照本建议使用 int RefId 的实际示例question https stackoverflow com questions 11117469 how can i extend servicestack authen
  • 如何在 60 分钟后删除共享首选项

    我想存储登录数据 但希望在 60 分钟后删除该数据 执行此操作的正确方法是什么 在这 60 分钟内可以关闭 停止 打开应用程序 我不想使用内部数据库 这是我的访问代码SharedPreferences sharedpreferences g
  • 模拟器无法加载

    我正在使用 hello android 教程并通过 eclipse 创建 avd 启动模拟器时不使用图像 它只是显示一个黑色的后屏 中间有 ANDROID 字样 并且在 ANDROID 字样的末尾有一个闪烁的光标 我已按照 T 的步骤安装
  • Flutter:如何移动文本字段字符计数器?

    标题很好地总结了这个问题 我有一个TextField with a maxLength 250这就是它的样子 有没有办法把柜台放在其他地方 最好位于发送按钮的左侧 但也可能位于发送按钮的上方和左侧TextField 有任何想法吗 谢谢 可能
  • SAS合并多个表

    我想知道合并多个表的最佳方法是什么 我在所有表中都有唯一的标识符 我应该在对表进行排序后一步加入所有表 还是应该逐步进行一一表合并 这有关系吗 您可以一步进行多次合并 然而 这并不是最安全的方法 如果您的数据可能存在缺陷 最好逐步执行此操作
  • Drupal 6 无法构建菜单路由器和链接

    当我在 Drupal 中启用新菜单 例如 mymodule 时 Drupal 应该能够从 mymodule menu hook menu 获取菜单项 处理这些菜单项并将菜单项插入到 menu router 和 menu links 表中 然
  • 具有键唯一性和按位置排序的 MFC 字典集合

    看着表上http msdn microsoft com en us library y1z022s1 28v vs 80 29 aspx core collection shape features http msdn microsoft
  • 如何在python 3.6.5中通过变量创建子元素

    我的代码是 import xml etree ElementTree as ET from lxml import etree var1
  • 目录 * 和文件顺序

    我需要将目录中的所有文件连接到一个文件 但具有指定名称的文件必须位于输出的顶部 只是在做cat gt result将按字母顺序连接所有文件 有什么办法告诉猫放置文件vars css或任何其他输出的开头 现在我只是重命名文件需要首先000 f
  • 使用 numpy.argsort 的输出就地排序

    我有两个数组 A 和 B 我想根据 A 对 A 和 B 进行排序 所以我这样做 sort order numpy argsort A A A sort order B B sort order 问题是 A 和 B 都非常非常大 因此上述情况
  • Android:WebView/BaseInputConnection 中的退格键

    我在 Android 4 2 中遇到软键盘退格问题 我在 WebView CodeMirror 中有一个自定义编辑器 它使用一个空的
  • [[NSMutableDictionary alloc] initWithObjects:...] 和 [NSMutableDictionary DictionaryWithObjects:...] 之间的区别?

    仍在学习 Objective C iPhone SDK 我想我知道为什么这不起作用 但我只是想确认一下 In awakeFromNib 如果我使用 NSMutableDictionary alloc initWithObjects 它实际上
  • Mongoose 查找 array.length 大于 0 的所有文档并对数据进行排序

    我正在使用 mongoose 对 MongoDB 执行 CRUD 操作 这就是我的架构的样子 var EmployeeSchema new Schema name String description type String default