findOneAndUpdate 覆盖作为 doc 传递的 2 级以上深度对象中的属性

2024-02-05

假设我有这个架构:

var UserSchema = new Schema({
    name : {
        firstName : String,
        lastName : String
    }
});

我创建这个用户:

User.create({
    name : {
        firstName : Bob,
        lastName : Marley
    }
}, function (err, user) {
    if(err) {
        return console.error(err);
    } else {
        return console.log(user);
    }
});

我注意到如果我这样做:

User.findOneAndUpdate({_id: userId}, { name: { firstName : "Damian" } }, function (err, user) {
    if(err) {
        return console.error(err);
    } else {
        return console.log(user);
    }
});

我现在的用户是:

user = {
    name : {
        firstName : "Damian"
    }
}

但是,如果我这样做:

User.findOneAndUpdate({_id: userId}, { "name.firstName" : "Damian" }, function (err, user) {
    if(err) {
        return console.error(err);
    } else {
        return console.log(user);
    }
});

我的用户是:

user = {
    name : {
        firstName : "Damian",
        lastName : "Marley"
    }
}

有没有一种方法可以将未填写所有属性的对象传递给findOneAndUpdate,并保留之前存在的属性,而不去掉它们? (与$set在蒙戈)。这实在是太烦人了……


展平不完整的嵌套对象flat https://www.npmjs.com/package/flat, 像这样:

var flatten = require('flat')

flatten({
    name : {
        firstName : "Damian"
    }
})

// { 
//   'name.firstName': 'Damian'
// } 

现在你可以打电话findOneAndUpdate正如您在第二个示例中所做的那样。

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

findOneAndUpdate 覆盖作为 doc 传递的 2 级以上深度对象中的属性 的相关文章

  • 节点未被识别为内部或外部命令,但位于 PATH 中

    尽管我遵循了以下建议 使用phonegap cordova时 node 不被识别为内部或外部命令 可操作程序或批处理文件 https stackoverflow com questions 23412938 node is not reco
  • 从 bash 脚本运行节点

    很简单 我正在尝试使用 cron 自动运行 nodejs 脚本 但是脚本本身似乎无法运行该文件 我的脚本很简单 usr bin env node node var node assets js update js 但是 在运行此命令时 它返
  • 无法安装js-bson

    我正在使用Windows 7 64位 尝试安装bson作为mongodb的依赖项 我收到此错误 npm WARN package json email protected cdn cgi l email protection No READ
  • 如果 node_modules 目录存在,Azure 模拟器无法启动 Web 角色

    我想我只是偶然发现了一个非常奇怪的问题 我有一个相当大的解决方案 包括一个具有 3 个角色 两个工作角色和一个 Web 角色的 Azure 项目 Web角色基于asp net mvc和web api 昨天尝试 gulp 用于编译和捆绑较少的
  • 使用 npm API 检索带有版本的私有 npm 包列表,可能吗?

    我在 npmjs org 上有一个私有 npm 注册表 其中包含几个私有 npm 包 我们正在转向内部私人 npm 注册表 verdaccio 长话短说 使用我们的 AWS 基础设施 verdaccio 服务器可能会因多种原因而被重建 主要
  • 如何使用 Node.js 解决“找不到模块”错误?

    从 GitHub 拉取模块并按照说明构建它后 我尝试使用以下命令将其拉入现有项目 gt npm install faye 这似乎可以解决问题 gt npm list home dave src server email protected
  • 如何避免在 webpack 生产构建中重复模块“bn.js”?

    我的应用程序使用了 webpack 4 不知何故 bn js包在生产构建中占用了大量资源 从图中可以看出 它占用了594 22KB 数据 有没有办法让1个文件bn js对于所有依赖于的包bn js 发生这种情况可能是因为您的依赖项都需要不同
  • 使用react_on_rails gem 创建演示项目时的节点问题

    我正在尝试遵循这个tutorial https shakacode gitbooks io react on rails content docs tutorial html使用 gem react on rails 创建一个虚拟项目 我想
  • 如何在 MongoDB 中创建 Mongoose 模型而不创建集合?

    我只想有一个versioneditemsMongoDB 中的集合 但我需要注册VersionedItem模型和ItemPatch模型 因为我需要创建ItemPatches 填充 aVersionedItem 不会有单独的ItemPatch文
  • Node.js 和代码优先

    我使用代码优先方法开发实体框架 现在我正在学习 Node js 我想知道是否有一种方法可以使用 Node js 和一些库来实现相同的代码优先方法 我正在考虑使用MySql作为数据库 你可以看看续集 http docs sequelizejs
  • mocha——手表和猫鼬模型

    如果我让 mocha 监视更改 每次保存文件时 mongoose 都会抛出以下错误 OverwriteModelError 无法覆盖Client模型一旦编译 我知道猫鼬不允许两次定义模型 但我不知道如何让它与mocha watch clie
  • 使用单个“proxyServer”将 Websocket 代理到多个目标

    我正在开发一个nodeJS websocket代理服务器 用例是当 websocket 请求到来时 我将检查其凭据 添加新标头 然后根据其组 来自用户 ID 将 websocket 连接重定向到其目标 webscoket 服务器 我发现大多
  • 将文件从一个文件夹移动到 s3 中的另一个文件夹

    首先 我尝试将文件复制到其他文件夹中 但无法删除它 仅当文件复制到目标文件夹时 如何才能删除该文件 const s3Params Bucket bucket CopySource bucket objectkey Key processed
  • 如何在 NodeJS 中允许表单数据

    我最近创建了一个接受文件的 API 我正在尝试使用 Postman 测试 API 如果我使用发出帖子请求x wwww form urlencoded身体类型 一切正常 我得到了所有预期的数据 唯一的问题是它不允许发送文件 如果我使用form
  • 如何使用 node.js / mongodb 在 HTML 中显示任意、无模式数据

    我使用 mongodb 将应用程序错误日志存储为 json 文档 我希望能够将错误日志格式化为 HTML 而不是将纯 json 返回到浏览器 日志是完全无模式的 它们可以随时更改 因此尝试执行此操作 在 Jade 中 是没有用的 var i
  • 无法使用 Jade 模板包含相对路径文件

    当我尝试将文件包含在同一文件夹中时 收到以下错误 the filename option is required to use include with relative paths 有两个文件 索引 jade 项目列表 jade cont
  • Express 4 中的查询字符串变量仍然为空

    按照此处的建议编写简单的服务器堆栈溢出 https stackoverflow com questions 5710358 how to retrieve post query parameters 休息 api js const expr
  • uncss 错误:C.UTF-8:不是有效的语言标签

    嗨 我正在尝试使用UNCSS https github com giakki uncss第一次从 CSS 中删除未使用的样式 我收到以下错误 Fontconfig 警告 忽略 C UTF 8 不是有效的语言标记 home ubuntu nv
  • Nodejs 异步 Promise 队列

    我需要使用速率受限的 API 例如 我一秒钟只能进行 10 个 API 调用 因此我需要等待当前秒结束才能进行另一个 API 调用 为了实现这一目标 我想创建一个可以自行管理的异步队列 它的主要功能是让我向队列添加一个新的 Promise
  • 使用 NodeJS 创建 YouTube 播放列表

    我正在尝试使用 NodeJS 服务器创建 YouTube 播放列表 我已按照 Oauth 的 NodeJS 快速入门说明进行操作 如以下链接所示 https github com youtube api samples blob maste

随机推荐

  • 统计同一张表上多个条件的SQL

    我正在尝试编写一个查询 返回在 2020 年 1 月 1 日之后购买 镜子 或 自行车 并且在 12 个月内还购买了 书 或 沙发 的客户 使用计数以防他们购买多次 我编写的查询不完整 因此我需要一些帮助 我缺少计算未来 12 个月内订单数
  • 如何将 LINQ 查询相互附加?

    我有一个表单 可以根据他们选择的内容过滤数据 我正在尝试将 linq 查询相互附加 以便最终结果是他们在屏幕上选择的结果 这是我的代码 private void button Search Click object sender Event
  • Spring JPA:从异步方法处理时数据未保存到数据库

    我有一个使用 Spring JPA 的应用程序 并使用 Async spring 注释执行一些后台进程 该过程需要将参数保存在数据库中 或者如果参数已经存在则更新数据库 这不能正常工作 因为在 Async 方法完成后我的数据实体没有保留在数
  • beans.xml 上的文件过早结束

    xml 的内容
  • 通过 Rails 3 中的范围进行预加载

    我一直在尝试根据 Rails3 应用程序中的某些范围急切加载关联 但找不到任何解决方案 我的应用程序有以下型号 class Project has many entries has many to dos class ToDo has ma
  • 强制触摸 UITableViewCell 内的 UICollectionView

    我有一个带有 Tableview 的 viewController 多个 TableViewCell 并且在每个 TableViewCell 中都有一个带有多个 UICollectionViewItems 的 UICollectionVie
  • 纯 JS 幻灯片菜单,能够“在菜单外部单击”关闭它

    我正在尝试重新表述我的问题 并将完成我所做的所有步骤 特别是我失败的地方 我对 JS 的了解并不深 但有通过实践学习的意愿以及社区的帮助 我偶然发现这个答案 https stackoverflow com a 38317768 559718
  • 使用 POST 请求重定向的好方法?

    我需要通过 POST 请求将用户重定向到外部站点 我想到的唯一选择是通过 JavaScript 提交表单 有任何想法吗 不太明白你的意思 所以我们举几个场景 用户应该将表单发布到您自己以外的服务器 很简单 只需将目标指定为表单操作即可
  • (Codesandbox,Vue)“属性或方法“children”未在实例上定义,但在渲染期间引用。”

    我目前正在构建一个状态管理器 它可以集成到多个前端框架中 包括 Vue 为了演示 Vue 中状态管理器的用法 我创建了一个简单的codesandbox 因为有一个实时代码示例总是很好 可以在自述文件中进行推广 但不知何故 我总是在代码和框中
  • Path 中加号的 Data 值是多少

    如何使用 Path 对象中的 data 属性绘制加号和减号 这是我的三角形路径对象 我需要将其更改为加号
  • JS 客户端 Exif 方向:旋转和镜像 JPEG 图像

    数码相机照片通常保存为带有 EXIF 方向 标签的 JPEG 为了正确显示 图像需要根据设置的方向进行旋转 镜像 但浏览器会忽略渲染图像的此信息 即使在大型商业 Web 应用程序中 对 EXIF 方向的支持也可能不稳定1 http www
  • Android:发送数据存储在MySQL中

    Solved 缺少 postData 的视图参数 已更改以反映这一点 我需要一些帮助 将 GPS 数据发送到服务器 该数据将使用 PHP 存储在 MySQL 数据库中 这是在我的 Java 文件中 ArrayList
  • JLabel setText 不更新文本

    我正在尝试使用以下方法更新 JLabelsetText 方法 但我无法重绘 JLabel 我必须使用repaint 方法来做到这一点 这是代码的一部分 我没有收到任何错误 但它没有更新 JLabel public void actionPe
  • 将 infoWindow 放置在远离标记的静态位置(Google 地图)

    我想要实现的 到目前为止找不到任何东西 是 infoWindow 没有附加到标记 我想将其放置在视口中的静态位置 并根据单击的标记交换内容 问 如何将谷歌地图标记信息窗口放置 而不仅仅是偏移 到固定位置 回答我自己的问题 如果有人需要这个
  • 如何禁用 #line 指令写入 T4 生成输出文件

    我在生成 T4 代码时遇到了一个小问题 我已将 T4 模板分解为单独的文件并将它们放置在不同的目录中 我已经这样做了 因此我的代码生成的部分内容可以在多个项目中重复使用 例如模型生成 存储库生成和服务生成都包含核心 EntityGenera
  • 双控制台输出?

    突然 当我在本地运行我的应用程序时 我得到了双控制台输出 有谁知道这可能是什么原因造成的 运行 Thin 和 Unicorn 时都存在该问题 gt Booting Thin gt Rails 4 0 0 application starti
  • 在 odoo 中安装 woocommerce 连接器

    我想连接 woocommerce 和 odoo 我在 Odoo 中安装 woocommmerce 连接器时遇到问题 我从那里得到了 woocommerce 连接器https github com OCA connector woocomme
  • 没有规则可以创建“opencv.exe”所需的目标“C:/opencv/build/lib/libopencv_world300d.dll.a”。停止

    所以我试图构建一个简单的 opencv 代码 但我不断收到此错误 而且我似乎在互联网上找不到任何解决方案 操作系统 Windows 8 1 编译器 GNU GCC 601 IDE CLion CMake 3 0 和 mingw64 这是我从
  • spring-mvc中将json解析为java对象

    我熟悉如何从我的返回 json Controller方法使用 ResponseBody注解 现在我正在尝试将一些 json 参数读入我的控制器 但到目前为止还没有运气 这是我的控制器的签名 RequestMapping value ajax
  • findOneAndUpdate 覆盖作为 doc 传递的 2 级以上深度对象中的属性

    假设我有这个架构 var UserSchema new Schema name firstName String lastName String 我创建这个用户 User create name firstName Bob lastName