如何根据 mongodb (mongoose) 中填充的对象对元素进行排序

2023-12-27

我有一个两个模式的钱包和用户

用户架构:-

var schema = new mongoose.Schema({
 first_name: {
     type: String,
 },
 wallet_id:{
     type: mongoose.Schema.Types.ObjectId,
     ref: 'wallet'
 },
}
module.exports = mongoose.model('user', schema);

钱包架构:-

var schema = new mongoose.Schema({
   amount: {
      type: String,
   },
}
module.exports = mongoose.model('wallet', schema);

我想找到所有用户并根据他们的可用钱包金额对他们进行排序,我尝试分配但我无法这样做

这是我的代码

//------------ 这是我第一次尝试 ------------

db['user'].find({})
 .populate({
    path: 'wallet',
    options: { sort: {amount:1}}
 })
 .then(res=>{
    console.log(res)
 })
 .catch(err=>{
    console.log(err)
 })

//------------ 这是我第二次尝试 ------------

db['user'].find({})
 .populate({
    path: 'wallet',
 })
 .sort({'wallet.amount':1})
 .then(res=>{
    console.log(res)
 })
 .catch(err=>{
    console.log(err)
 })

但它们都不起作用,我搜索了很多,但我没有得到任何适当的解决方案,有没有其他方法可以做到这一点,因为我知道我对此感到沮丧。

提前致谢


您无法对虚拟字段或填充字段进行排序,因为这些字段仅存在于您的应用程序对象(Mongoose 模型实例)中,但排序是在 MongoDB 中执行的。

参考:

  • 使用填充字段对查询进行排序 https://stackoverflow.com/questions/19428471/node-mongoose-3-6-sort-query-with-populated-field/19450541
  • 对 mongoose 3.x 填充文档进行排序的正确语法 https://stackoverflow.com/questions/27318115/the-correct-syntax-for-sorting-mongoose-3-x-populated-document
  • Mongoose,按填充字段对查询进行排序 https://stackoverflow.com/questions/11512965/mongoose-sort-query-by-populated-field

您还可以使用总计的 https://docs.mongodb.com/manual/reference/method/db.collection.aggregate/在 MongoDB 上。

db.getCollection('user').aggregate([
    { $lookup: { from: "wallet", localField: "wallet_id", foreignField: "_id", as: "wallet" }},
    { $unwind: "$wallet" },
    { $sort: {'wallet.amount': 1}}
]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据 mongodb (mongoose) 中填充的对象对元素进行排序 的相关文章

  • 如何修改Open Shift中的节点启动命令?

    我使用 ES6 和 babel node 来创建我的应用程序 并且我要求我的应用程序以命令启动babel node app js 此命令列在我的 package json 中的 script start 中 因此命令 npm start 运
  • Mongodb集合对象总小时数集合

    mongodb 收集数据 提前感谢 id ObjectId 5f7b3d78e95af70e17efd6d6 employeeId 2707 employeeName HrJosh status Present date 2020 10 1
  • 如何使用签名网址将文件上传到谷歌云存储桶

    我正在开发一个 Angular 应用程序 用于显示谷歌云存储桶的内容 对于后面 我在nodeJS中使用谷歌云功能 正如他们在上传文件的文档中提到的 我创建了一个函数来生成签名 url 但是当我使用签名 url 发送文件时 我在浏览器中收到了
  • 使用 NPM 重命名文件

    有没有办法重命名 npm 脚本中的单个文件 我想准备要分发的文件 但我需要将构建的文件命名为与源代码中不同的名称 我尝试过 orn 但这似乎只能在命令行上工作 不能作为 npm 脚本工作 我特别希望添加跨平台依赖项来完成我的项目 而不是编写
  • 使用空子文档集合保存 Mongoose 文档会导致重复键错误

    我有两个猫鼬模式 var productSchema new Schema name type String required true unique true var categorySchema new Schema products
  • 我无法在项目中使用节点波本威士忌

    我尝试对 scss 文件使用 npm 模块 波本威士忌 我收到以下错误 with function var paths Array prototype slice call arguments return concat apply bou
  • aws-mock-sdk s3.getObject 不起作用

    这是我的 lambda 处理程序 我在其中使用各种 AWS 服务 exports handler function event context var body event var isValidBody validate doValida
  • 为什么 NodeJS 不支持 String.prototype.replaceAll?

    这个字符串方法存在于 browserland 中 但不存在于 Node 中 为什么不 它既不是全新的 也不是异国情调的 replaceAll is part of ECMA 262 src https tc39 es ecma262 sec
  • 从文件中抓取随机行

    我不知道该怎么做 我应该从哪里开始 我用谷歌搜索了这个 但没有找到关于如何从文本文件中提取随机行的结果 我唯一发现的是https github com chrisinajar node rand line https github com
  • 如何使用 Node.js 异步服务多个 QBWC 客户端

    这个想法是使用 Node js 实现 QBWC Web 服务 它可以以异步方式服务多个传入请求 目前我正在研究qbws https github com johnballantyne qbws 这是 QuickBooks Desktop W
  • Javascript 充满好奇心

    当我调用这个 Promise 时 输出与函数调用的顺序不匹配 这 then出现在 catch 即使承诺 then之后被呼叫 这是什么原因呢 const verifier a b gt new Promise resolve reject g
  • 如何安装 Node 和 NPM 以便不必使用 sudo?

    我正在尝试在 Ubuntu 14 04 计算机上设置 Node js 和 NPM 但遇到了一些问题 在我的第一次尝试中 我不断得到EACCES尝试安装软件包时出错 有时甚至使用sudo 所以我彻底卸载了node和npm 现在我正在尝试找出如
  • mongoose 查询:通过 id 在数组中查找对象

    我怎样才能在此 Schema 中通过 id 找到图像 我有用户的 id 和我正在寻找的图像的 id 执行此操作的最佳方法是什么 在这种情况下 所有图像是否具有不同的 id 或者它们是否可以具有相同的 id 因为它们不属于同一用户 我的架构如
  • webpack用css/scss文件生成js文件

    描述 在我使用的 webpack 中迷你 CSS 提取插件 plugins new MiniCssExtractPlugin filename name hash css chunkFilename name hash css 加载 scs
  • Node.js 护照会话 Cookie 域

    我正在使用 node js Passport 并试图弄清楚如何在父域上设置 cookie 以便它可用于子域 用户登录 Domain com 然后用户访问 Sub Domain com 他应该仍然处于登录状态 如何在父域上设置 cookie
  • Nodejs 的简单 put 请求,无需 Express

    我需要能够将 zip 文件上传到 Brightsign 单元 并考虑创建一个 Rest api 我可以发出 put 请求来发送 zip 文件 但问题是我找到的所有例子都是使用express之类的框架 是否可以在不使用额外框架的情况下在 No
  • Discord.js v12:如何等待 DM 通道中的消息?

    这是我尝试过的代码 message author dmChannel awaitMessages msg gt console log msg content 但它返回此错误消息 TypeError Cannot read property
  • 如何在nodejs中处理大量对象

    我想处理长度约为 100 000 的数组 而不会给 CPU 带来太多负载 我研究了流并偶然发现了 highlandjs 但我无法使其工作 我也尝试过使用 Promise 和分块处理 但它仍然给 CPU 带来很大的负载 如果需要 程序可能会很
  • 通过条件将 Firebase 云消息传递 (FCM) 发送到多个主题的正确语法是什么

    简而言之 我想使用 Google Cloud Functions 向订阅主题组合的设备发送通知 文档说 主题中的 TopicA 主题中的 TopicB 主题中的 TopicC 我试图做的是 var topicsConditions type
  • 如何删除 node_modules - Windows 中的深层嵌套文件夹

    尝试删除后节点模块创建的目录npm install 源文件名大于文件支持的名称 系统 尝试移动到路径名称较短的位置 或者尝试 在尝试此操作之前重命名为较短的名称 I also tried shift delete and still hav

随机推荐

  • 更改Mysql自动索引号

    在我的表中 我有自动增量 id 其编号为 1 到 66 440 下一个编号是 88846790 从这里递增到 88846900 66440到88846790之间没有记录 我希望我的下一个自动增量编号为 66441 但它占用了 8884679
  • Laravel 应用程序 + 基于 Socket.IO 的 WebSocket 通知

    我有一个使用 Laravel 用 PHP 编写的 Web 应用程序 现在 我必须添加实时通知系统 从服务器 gt 客户端推送消息 并且可以检索从客户端 gt 服务器推送的消息 由于 Socket IO 向后兼容并且可以优雅地降级 因此我想将
  • Ruby on Rails Michael Hartl 第 3 章错误

    我在 Michael Hartl 的 RoR 教程中不断遇到此错误 是的 我用谷歌搜索了这个问题 看到它被回答了几次 我尝试了提供的解决方案 但他们没有解决问题 这是错误 ec2 user environment sample app st
  • 一元对元组的改变

    我正在寻找一个类似于以下类型的函数 Monad m gt a b gt b gt m c gt m a c 在我看来 它是绑定的某种组合 gt gt 和镜头操作 我知道我可以在绑定后通过模式匹配来解决这个问题 但我的直觉告诉我有一种 更简单
  • Firemonkey android read_phone_state运行时权限要求获取IMEI

    如何在运行时获得 read phone state 权限以获取 IMEI 号码 if not HasPermission android permission READ PHONE STATE then begin ASK AND GET
  • 如何在 Typescript 中使用 redux-thunk 通过 ThunkAction 正确输入 thunk?

    我正在尝试输入检查我的redux thunk使用 Typescript 编写代码 来自 Redux 官方文档 与 Redux Thunk 一起使用 https redux js org recipes usage with typescri
  • NSManagedObject 子类重复声明

    因此 当我的数据模型准备就绪时 我尝试在数据模型文件打开时生成子类 编辑器 gt 创建 NSManaged 对象子类 好了 生成了两个文件 一个是类声明 一个是属性 然而 我立即被提示我重新声明了一个已经存在的类 这是原始生成文件的位置 先
  • USB_DEVICE_ATTACHED 意图未触发

    有没有人能够让 android hardware usb action USB DEVICE ATTACHED 工作 好的 我正在尝试使用新的 USB 主机模式功能来检测 USB 设备何时连接 出于我的目的 我希望在连接设备时收到通知 我没
  • 在批处理结束时检测到不可提交的事务。事务被回滚

    我们在服务器迁移方面遇到问题 我们有一个应用程序 这么多事务在一台数据库服务器上运行良好 但是当将相同的数据库传输到另一台服务器时 我们面临以下错误 Server Msg 3998 Level 16 State 1 Line 1 Uncom
  • http - 更改请求网址?

    是否可以在不重定向的情况下更改 HTTP 请求的 url 例如代替 要求1 GET user abc123 HTTP 1 1 HTTP 1 1 301 Moved Permanently Location files abc123 要求2
  • ios webkit 中的 touchend 事件未触发?

    我正在尝试为基于 ios webkit 的应用程序实现一个菜单 其中用户触摸 单击并按住菜单按钮 menu item 500 毫秒后子菜单打开 div slide up sub menu 并且用户应该能够将手指 鼠标滑动到子菜单项并释放 l
  • Tapestry 4:资源缓存控制?

    我使用 Tapestry 4 每当我们推送更改任何资产 图像 样式表 JS 库 的版本时 我们都会遇到问题 因为用户的浏览器缓存中仍然有旧版本的资产 我想设置一些简单的方法来允许缓存 但在更新应用程序时强制下载新的资产 简单地完全禁止资产缓
  • 当列表数据发生变化时更新Android ListActivity?

    我想知道如何刷新ListActivity当我更改 添加数据时 我首先想到的是ListAdapter会知道列表何时更改 但是当我向列表添加元素时 列表上没有更新ListActivity 只有当我关闭 ListActivity 并再次重新打开它
  • 本地化 ASP.NET MVC 2 中的错误消息(默认验证属性)

    我正在开发一个多语言网站 我想本地化大多数 ValidationAttribute 的验证错误消息 例如 Requried 我知道可以这样做菲尔 哈克 http haacked com已在此显示article http haacked co
  • 类型提示和@singledispatch:如何以可扩展的方式包含 `Union[...]`?

    我正在重构一个转换各种日期格式的函数 即 ISO 8601 字符串 datetime date datetime datetime等 转换为 Unix 时间戳 我想要使 用新功能 singledispatch而不是类型检查 但我不知道如何保
  • 如何在Python中获取图像的信噪比?

    我正在过滤图像 我想知道信噪比 我尝试使用 scipy 函数 scipy stats signaltonoise 但我得到了一个数字数组 但我真的不知道我得到了什么 还有其他方法可以获得图像的信噪比吗 UPDATE 对于那些不阅读评论中链接
  • Sublime text:向新的语言定义添加符号(语法突出显示)

    我在 sublime text 2 中为一种稍微陌生的语言 Cadence SKILL 编写了语法突出显示 它的工作方式就像一个魅力 但是我怀念 CTRL R 的功能 它以一种易于访问的方式找到当前文件中的所有符号 函数 任何人都可以建议如
  • SQL查询有特定的执行顺序吗?

    我对 SQL 查询的执行顺序感到困惑 例如 Inner join in MySQL在下面的代码中 之间WHERE条款和SELECT FROM子句 哪一个首先被解释和执行 也就是说 下面的查询是否带来 全部tables data首先找到与以下
  • 从上到下滚动列并用上面单元格中的值替换 0

    我必须从上到下滚动一列 实际上是两列 但如果我能得到一列 我就可以管理 并替换0或上面有单元格值的空白 这是我到目前为止所拥有的 它不起作用 Sub ReplaceZeros Application ScreenUpdating False
  • 如何根据 mongodb (mongoose) 中填充的对象对元素进行排序

    我有一个两个模式的钱包和用户 用户架构 var schema new mongoose Schema first name type String wallet id type mongoose Schema Types ObjectId