猫鼬精益查询,虚拟值未显示

2023-11-21

我在猫鼬上设置了以下架构,我使用版本 3.6.17:

var PostSchema = new Schema({
    _id: { type: String, required: true, index: { unique: true } },
    video: { type: String, default: ''},
    cover: { type: String, default: ''},
    createdAt: { type: Date, default: Date.now },
    lastUpdate: { type: Date, default: Date.now }
    }, { autoIndex: true, toObject: { virtuals: true }, toJSON: { virtuals: true } });

以及以下虚拟:

PostSchema.virtual('replied').get(function () {
    return false;
});

PostSchema.virtual('cover_url').get(function () {
    return config.cover.server + this.cover;
});

PostSchema.virtual('video_url').get(function () {
    return config.video.server + this.video;
});

当我进行聚合查询时:

Post.aggregate(  { $match:  { replyTo: { $ne: "" }, author: user._id,  draft: false } },
                    { $project: {
                            _id: 1,
                            video: 1,
                            video_url: 1,
                            cover: 1,
                            cover_url: 1,
                            createdAt: 1,
                            lastUpdate: 1,
                            Ireplied : { $not: "$replied"} }
                          }, function ( ) ....

此时,虚拟对象返回,但返回的属性 this.cover 或 this.video 未定义。

当我执行 Post.findOne(..).lean().populate(...) 等操作时,我根本没有得到虚拟值,也没有使用 Post.find().lean().populate(.. .)

我是否在 Post 架构上遗漏了某些内容,以便能够返回虚拟值,或者我做错了什么? 为什么通过聚合操作,虚拟返回值“this.cover”为未定义?

谢谢你!


lean查询返回原始数据MongoDB驾驶员的反应很简单js目的。所以,没有getters, setters, virtuals或其中的其他“猫鼬魔法”。看Api docs了解更多信息。

要点是lean查询的目的是尽快返回您的对象。如果你需要virtuals- 使用普通的 Mongoose 查询。

至于聚合度,是100%MongoDB功能,而 Mongoose 无法控制它。所以,当你打电话时aggregate从 Mongoose 来看,它的工作原理与aggregate in MongoDB安慰。aggregate无法使用虚拟值进行操作,因为您的数据库中没有此类字段。 Mongoose 甚至无法根据您的架构来转换聚合查询(就像它所做的那样)findOneAndUpdate参数),因为聚合会在每个步骤中更改文档的形状。看猫鼬 API 文档 and MongoDB 文档了解更多信息。

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

猫鼬精益查询,虚拟值未显示 的相关文章

  • Graphql - 获取完整的子对象,如果不存在则返回 null

    我有一个 graphql 查询 它得到一个Meeting对象与Client object type Meeting address String client Client type Client displayName String Th
  • MongoDB 使用 $sort、$skip 和 $limit 返回错误的行

    这是我正在使用的功能 MyModel aggregate match query sort createdAt 1 skip skip limit 10 allowDiskUse true query是过滤行 skip是基于分页的动态值 即
  • Express js 错误:“express 已弃用 res.sendfile:请改用 res.sendFile”

    设置路径的正确方法是什么 在我的应用程序中 我使用此代码设置发送文件的路径 app get function req res get put post delete res sendfile dirname client views ind
  • 在承诺中运行同步函数

    我是 JS 和异步操作的新手 在使用express的nodeJS路由器中 我使用mongoose从mongo聚合了一些数据 该数据是每隔 15 分钟从不同站点收集的天气数据 我使用猫鼬聚合管道处理数据 以获取每小时数据并按每个站点进行分组
  • 将字符串数组转换为对象 Id 数组

    我有一个字符串数组 let stringObjectIdArray fssdlfsd343 43434234242 342424242 我想使用 mongoose 类型将字符串数组更改为对象 Id 数组 但它不起作用 它仅适用于字符串而不是
  • CoreMongooseArray 到普通数组

    我正在从一个架构中选出 2 个元素 并希望在另一个架构中进行更新 为此 我使用切片方法将数组中的前 2 个元素列入候选名单 但我越来越 CoreMongooseArray 元素1 元素2 而不是 元素1 元素2 如何删除 CoreMongo
  • MongoDB 和 Mongoose 访问一个数据库,同时针对另一个数据库进行身份验证(NodeJS、Mongoose)

    我有几个数据库 不想为每个数据库创建单独的用户帐户 MongoDB 支持使用另一个数据库中定义的帐户来验证对数据库的访问的概念 但语法示例很难获得 当我终于弄清楚时 我正准备提出一个问题 如果它对其他人有帮助 就放在这里 这是 mongod
  • mongoDB白名单IP

    我看到类似的帖子 但没有一个能帮助我解决我的问题 在学习了从头开始构建 MERN 应用程序的 Udemy 教程后 我陷入了 mongoose 连接的困境 这是我的 index js 代码 const express require expr
  • isModified 并预保存 mongoose...Nodejs

    您好 我只想在密码更改时使用散列密码保存 因此我在预保存中使用了 isModified 函数 但即使我更改了密码 它也总是返回 false 我尝试这样做的原因是因为我不想在更改其他属性时更改并保存我的密码 router post chang
  • 为什么我的 Mongoose 3.8.7 架构 getter 和 setter 被忽略?

    在使用 Node js Mongoose 和 MongoDB 时 我发现当我执行 findOne 查询时 我的 Mongoose 模式 getter 和 setter 不会触发 我发现一个旧线程表明 2 x 版本中的 getter 和 se
  • 将日期差转换为年数以计算 MongoDB 中的年龄

    我正在使用以下方法来计算时间戳差异中的年龄 db getCollection person aggregate project item 1 DOB personal DOB dateDifference subtract new Date
  • 猫鼬和部分选择/更新

    在node js中 当我使用Mongoose时 是否可以只获取大对象的部分值 是否可以只更新部分值 要仅获取某些字段 请将字段名称字符串作为第二个参数传递给find Include the first and last properties
  • 使用 Mongoose 将数组(“标签”)保存到 MongoDB

    我正在玩 Mongoose 但在保存到数组时遇到问题 例如 我在页面上有一个以逗号分隔的输入字段tags 我从 req body tags 中获取这些内容 删除空格 然后用逗号分隔它们以获得标签数组 现在 如何将该数组保存回我的数据库 我猜
  • MongoDB req.body 问题

    我有一个非常简单的 Mongo 设置 如下所示 这非常适合从输入字段获取数据并保存数据 一切都在工作 我的问题 我将如何循环遍历前端的 jobs 变量并设置数据 以便它适用于我的模型 不知何故 我需要将其输入到输入中 以便我可以 req b
  • 使用 mongoose 更新 mongoDb 中数组内的对象[重复]

    这个问题在这里已经有答案了 我正在 MongoDB 上工作 以更新 MongoDB 集合中数组内部的对象值 我的收藏就像 id ObjectId 59b7e839200a5c00ee2d2851 player New playesList
  • 猫鼬查找并删除

    我正在尝试删除满足查询的多个文档 但是 我需要这些文档的数据将它们存储在单独的集合中以实现撤消功能 我让它工作的唯一方法是使用多个查询 Data find query exec function err data Data remove q
  • 阻止 Mongoose 为子文档数组项创建 _id 属性

    如果您有子文档数组 Mongoose 会自动为每个子文档创建 id 例子 id mainId subDocArray id unwantedId field value id unwantedId field value 有没有办法告诉 M
  • 如何在 Mongoose.js 查询中执行大于语法

    如何获得适用于此 Mongoose 查询的 大于 语法 var where where id req wine id where sameAs undefined where scoreTotal gt 0 THIS NEEDS TO SE
  • 多个 2dsphere 索引,不确定要运行 geoNear 中的哪一个

    我在用 geoNear and near在 MongoDB 的聚合内部 我有将我的 MongoDB 数据库托管到 mlabs 中 And 我本地一切正常 但不知道为什么当我部署应用程序时出现以下错误 geoNear 命令失败 ok 0 0
  • 创建猫鼬模型时无法读取未定义的属性“用户”

    我正在尝试创建一个猫鼬模型并使用它从 mongodb 获取数据 但出现异常 我的 package json 中的猫鼬版本是 猫鼬 4 5 5 TypeError Cannot read property users of undefined

随机推荐

  • 脚本 @php artisan package:discover --ansi 处理返回的 post-autoload-dump 事件,错误代码为 -1073741819

    从我的 github 中拉出一个项目后 我收到了一些奇怪的错误代码 我做的第一件事是composer dumpautoload composer update and php artisan migrate fresh seed每当我到达新
  • Django:内置密码重置视图

    我正在遵循文档 当我单击页面以重新启动密码时 出现 NoReverseMatch 错误 resetpassword 处无反向匹配 与 password reset done 相反 未找到参数 和关键字参数 尝试了 0 个模式 urls py
  • iOS 分发证书过期会怎样?

    我现在正在向 iTunes connect 提交 iPhone 应用程序 我有一个关于分发证书的问题 如果分发证书过期会发生什么 用户购买的应用程序在证书过期后会停止运行或崩溃吗 或者分发证书过期后用户无法安装应用程序或无法从App Sto
  • 是否可以在不使用偏移量的情况下将指针存储在共享内存中?

    当使用共享内存时 每个进程可以将共享区域映射到其各自地址空间的不同区域 这意味着当在共享区域中存储指针时 您需要将它们存储为偏移量共享区域的开始 不幸的是 这使原子指令的使用变得复杂 例如 如果您尝试编写一个无锁算法 例如 假设共享内存中有
  • 如何使用 Bing 地图检索邮政地址的纬度和经度?

    我希望能够检索给定地址的地理坐标 纬度和经度 我希望如果我有完整的地址 街道地址 城市 州 邮政编码 我可以做到这一点 如果重要的话 我正在使用 Bing 地图 我得到的框架代码是这样的 fullAddress AddPushpin 和 g
  • 使用node.js读取Excel文件

    好的 所以我正在使用FileUploader将我的文件从 Angular 上传到我的模块REST API var uploader scope uploader new FileUploader url api getUrl uploadC
  • JavaScript:如何找出浏览器窗口中视口的宽度和高度?

    如何找出浏览器窗口中视口的宽度和高度 如何找出有多少文档向下和向右滚动 尝试这个函数 并在需要时调用它 function getViewPortSize var viewportwidth var viewportheight Standa
  • Emberjs 异步路由

    我的问题与问题相关 1183 and 1268emberjs 的 我在路线上有动态元素 如果我通过应用程序导航 一切都可以 问题是当我重新加载页面或输入网址时 在这种情况下 应用程序进入反序列化函数并通过其 id 加载和对象 但此加载是异步
  • 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

    什么是ArrayIndexOutOfBoundsException意思是我该如何摆脱它 下面是触发异常的代码示例 String names tom bob harry for int i 0 i lt names length i Syst
  • 存储过程返回错误的标量值 -1,而不是返回值

    我正在尝试从存储过程返回标量值 我实际上想返回新创建的记录的 ID 但我已将问题简化为需要一个存储过程int并尝试返回相同的内容int 这始终返回 1 非常感谢您的帮助 Web API 控制器调用 var idtest dbconn my
  • 使 JComponent 适合/缩放到正在打印的页面

    我正在尝试缩放我的组件 以便它可以适合单个打印页面 纵向或横向 gDiagram getComponent 是我要打印的组件 JPanel 这是我到目前为止所得到的基于如何打印单个 JPanel 的内容 Prints the diagram
  • 如何使用重载的显式转换运算符?

    我在 C 中定义了一个类型 如下所示 struct F public static explicit operator F long value public static explicit operator long F value pu
  • 将 Python 项目提交到 Dataproc 作业

    我有一个 python 项目 其文件夹具有以下结构 main directory lib lib py run script py script py is from lib lib import add two spark SparkSe
  • 用Java模拟文件

    我正在尝试为采用字符串文件名的方法编写单元测试 然后打开文件并从中读取 因此 为了测试该方法 我考虑编写一个文件 然后调用我的方法 但是 在构建场中 不可能将文件任意写入磁盘 是否有一种标准方法可以在单元测试中 模拟 真实文件 我发现Moc
  • JavaFX - 使 ScrollPane 自动滚动

    我在 ScrollPane 中有一个标签 我正在循环中更新标签 在另一个线程中 如果用户没有将 ScrollPane 保持在某个位置 如何更新 ScrollPane 使其向下滚动 不是横向滚动 这将手动完成 有一个设置器吗 要将 Scrol
  • 如何隐藏操作栏中的向上按钮

    我想做一个编辑模式 采用平板电脑 Gmail 应用程序的风格 如果用户按下操作栏上的编辑按钮 我想向他 她显示一个操作视图 该视图左侧有一个完成按钮 右侧有一个删除按钮 我这里有一个无需 actionbarsherlock 即可工作的示例
  • 如何正确实现 IDisposable

    作为一名开发人员 我见过很多 C 代码 它们试图通过将变量设置为 null 或在自己的类 Dispose 方法中调用类 例如 DataSet 上的 Dispose 来帮助 GC 我一直想知道是否需要在托管环境中实施它 这段代码的设计模式是否
  • Rails javascript 仅在重新加载后才起作用

    问题正是标题所说的 javaScript 位于资产管道中 即 assets javascripts myfile js coffee 在 application js 中我有 require jquery require jquery uj
  • 我们如何获取 IAM 用户、他们的组和策略?

    我需要获取所有 aws 用户及其相应的组 策略 然后获取是否为他们激活了 MFA 谁能告诉我如何通过 aws cli 或 boto 来完成它 我有一个脚本可以提取 aws 中的所有用户 import boto3 from boto3 imp
  • 猫鼬精益查询,虚拟值未显示

    我在猫鼬上设置了以下架构 我使用版本 3 6 17 var PostSchema new Schema id type String required true index unique true video type String def