NodeJS + Mongo:如果不存在则插入,否则更新

2023-12-25

我的 mongodb 集合中有一个对象。其架构是:

{
    "instruments": ["A", "B", "C"],
    "_id": {
        "$oid": "508510cd6461cc5f61000001"
    }
}

我的收藏可能有这样的对象,但也可能没有。我需要检查带有关键“仪器”的对象是否存在(请注意,我目前不知道“instrument”是什么值,它可能包含任何值或数组),如果存在 - 执行更新,否则 - 插入新值。我怎样才能做到这一点?

collection.find( {  "instruments" : { $exists : true } }, function(err, object){
    if (object) {
        //update
    } else {
        //insert
    }
});

不起作用((


如果您想插入一个未找到的文档,您可以使用upsert选项中的update() method:

collection.update(_query_, _update_, { upsert: true });

请参阅文档upsert https://docs.mongodb.com/manual/reference/method/db.collection.update/#upsert-behavior行为。

一个例子$exists操作员。

假设您的集合中有 6 个文档:

> db.test.find()
{ "_id": ObjectId("5495aebff83774152e9ea6b2"), "a": 1 }
{ "_id": ObjectId("5495aec2f83774152e9ea6b3"), "a": [ ] }
{ "_id": ObjectId("5495aec7f83774152e9ea6b4"), "a": [ "b" ] }
{ "_id": ObjectId("5495aecdf83774152e9ea6b5"), "a": [ null ] }
{ "_id": ObjectId("5495aed5f83774152e9ea6b7"), "a": [ 0 ] }
{ "_id": ObjectId("5495af60f83774152e9ea6b9"), "b": 2 }

并且您想要查找具有特定字段的文档"a"), 您可以使用find()方法与$exists http://docs.mongodb.org/manual/reference/operator/query/exists/操作员 (节点文档 http://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html?highlight=exists#special-query-operators)。注意:这还将返回字段为空数组的文档。

> db.test.find( { a: { $exists: true } } )
{ "_id": ObjectId("5495aebff83774152e9ea6b2"), "a": 1 }
{ "_id": ObjectId("5495aec2f83774152e9ea6b3"), "a": [ ] }
{ "_id": ObjectId("5495aec7f83774152e9ea6b4"), "a": [ "b" ] }
{ "_id": ObjectId("5495aecdf83774152e9ea6b5"), "a": [ null ] }
{ "_id": ObjectId("5495aed5f83774152e9ea6b7"), "a": [ 0 ] }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS + Mongo:如果不存在则插入,否则更新 的相关文章

  • nodeJS exec 不适用于“cd”shell cmd

    var sys require sys exec require child process exec exec cd home ubuntu distro function err stdout stderr console log cd
  • 在使用 supertest 和 Node.js 的测试中,res.body 为空

    我正在测试 Node js API超级测试 https github com visionmedia supertest 我无法解释为什么res body对象超集返回为空 数据显示在res text对象 但不是res body 知道如何解决
  • 如何从 NodeJs 调用 python 脚本

    我需要在 NodeJs 中调用这个 python 脚本 Read py usr bin env python coding utf8 import RPi GPIO as GPIO import MFRC522 import signal
  • Node.js 重用 MongoDB 参考

    我无法理解 Node js 例如 MongoDB 访问 这是我得到的 mydb js var mongodb require mongodb server new mongodb Server staff mongohq com 10030
  • 如何使用express在node.js中使浏览器关闭后会话过期?

    我在用 req session cookie maxAge 14 24 3600 1000 0 让会话在两周后过期 但现在我想让它在浏览器关闭后过期 有什么办法可以做到吗 来自连接会话中间件文档 https github com expre
  • NodeJS 在目录中递归地哈希文件

    我能够实现目录中的递归文件遍历 即探索目录中的所有子目录和文件 为此我使用了answer https stackoverflow com questions 5827612 node js fs readdir recursive dire
  • 元素数组中数组的 MongoDB 全文

    当元素数组中的数组包含应与我的搜索匹配的文本时 我无法检索文档 以下是两个示例文档 id foo name Thing1 data text X X name Thing2 data text X Y id foo
  • isModified 并预保存 mongoose...Nodejs

    您好 我只想在密码更改时使用散列密码保存 因此我在预保存中使用了 isModified 函数 但即使我更改了密码 它也总是返回 false 我尝试这样做的原因是因为我不想在更改其他属性时更改并保存我的密码 router post chang
  • Grunt-browserify+mapify+coffeescript = 未通过相对路径找到模块

    我尝试让 grunt browserify 使用 Coffeescript 的相对路径 但当我尝试构建源代码时总是收到错误消息 gt gt Error module src app utils includeMixin not found
  • keystonejs 模型中的动态类型选择

    我想在 adminUI 中使用一个组合框 其中包含来自 Web 服务的字段 我正在考虑使用预 查找 挂钩获取数据 然后覆盖模式中 受众 属性的选项属性 Schema Compliance add title type Types Text
  • 如何调试 Node.js 应用程序?

    如何调试 Node js 服务器应用程序 现在我主要使用警报调试打印语句如下 sys puts sys inspect someVariable 一定有更好的调试方法 我知道谷歌浏览器 http en wikipedia org wiki
  • Electron — 无法显示自定义图标

    我在以两种不同的方式设置 Electron 应用程序的图标时遇到问题 非打包 通过终端运行应用程序 我的 main js 确实指定了一个 图标 值 指向图标文件 但它不适用 包装 使用电子包装器 我的 package json 文件指定了
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • Mongo C# 驱动程序更新嵌套数组中的特定元素

    如何在 Mongo C 驱动程序 中修改嵌套属性 数组 中的单个元素而不检索整个文档 public class Element public int Value get set public string Name get set publ
  • 如何在 Alexa 中循环播放音频

    我正在为 Alexa 构建睡眠环境音频技能 我正在尝试循环播放音频 这样我就不必下载 10 小时版本的音频 如何让音频正常工作 我将其构建到将播放音频但不循环播放的位置 我已经在我的造雨者技能中解决了这个问题 https www amazo
  • Mongoose 重复且架构键唯一

    我想让关键项目在该集合中独一无二 但我无法正常工作 我在这里发现了类似的问题 task js function make Schema mongoose var Tasks new Schema project type String in
  • 如何让我的云代码在我的 Worker dyno(而不是 Web dyno)上运行?

    我在heroku 上部署了一个解析服务器 我正在解析服务器上运行一些云代码 该代码需要几分钟才能运行 并且在 Web dyno 上运行时会导致 Heroku 出现超时错误 heroku router at error code H12 de
  • 在生产中使用 babel-node 可以吗

    我一直在使用 babel node 和 browserify 以及 babelify 转换来开发一个网站 以支持 ES6 语法 我只是想知道 我可以在生产中运行它吗 babel node server 而不是 node server 要在
  • 有没有办法在插入查询中执行另一个查询?

    好的 这是我的查询 我刚刚添加了 ACCOUNTID 和 accountID 部分 这显然不起作用 INSERT INTO Leads LEADID CREATEUSER CREATEDATE FIRSTNAME MODIFYDATE AC
  • NodeJS CPU 一次飙升至 100%

    我有一个用 NodeJS 编写的 SOCKS5 代理服务器 我正在使用原生net and dgram打开 TCP 和 UDP 套接字的库 它可以正常工作大约 2 天 所有 CPU 的最大利用率约为 30 两天没有重新启动后 一个 CPU 峰

随机推荐

  • 参考和盒子之间的可变性差异

    我试图了解 Rust 指针类型及其与可变性的关系 具体来说 声明一个保存指针且本身可变的变量的方法 即可以指向其他内存 并声明该变量数据本身是可变的 即可以改变through指针变量的值 这就是我对简单引用工作方式的理解 let mut a
  • 将 FlowDocument 转换为 PDF 的最佳方法是什么

    您会如何建议我将 FlowDocument 转换为 PDF 以附加到电子邮件中 FlowDocument 是动态的 而不是静态的 我希望能够将 PDF 作为 byte 存储在内存中 而不是存储在磁盘上 但这是可以协商的 感谢您的帮助 我假设
  • 情节小提琴情节太窄

    我正在尝试根据绘图文档示例构建多个分割小提琴图 我不知道为什么小提琴被水平地弄脏了 我包括了 violinmode overlay 这是另一个人曾经建议的 但它没有什么区别 下面是我正在使用的代码 lengthlm go Figure le
  • 检查两个图像文件是否相同..校验和或哈希值?

    我正在做一些图像处理代码 其中我从 URL 下载一些图像 如 BufferedImage 并将其传递到图像处理器 我想避免将同一图像多次传递给图像处理器 因为图像处理操作的成本很高 图像的 URL 端点 如果它们是相同的图像 可能会有所不同
  • 是否可以将 USB 设备暴露给 LXC/Docker 容器?

    我有一个包含在 Docker 文件中的嵌入式系统开发映像 为了刷新代码 我需要通过 USB 串行连接到节点 例如 dev ttyACM0 对于 Docker 我使用了新的绑定安装功能 请参阅https github com dotcloud
  • 以 NSDates 作为键的 NSDictionary

    是否有可能有一个 NSdictionary 其中键是 NSDates 并且可以将其写入 可存档到磁盘 不使用属性列表 因为那里只允许使用字符串键 你应该能够使用它来编写它NSKeyedArchiver 但这有一个缺点 那就是格式更加不透明
  • AttributeError:'bytes'对象没有属性'encode'

    尝试将代码从 python2 导入到 python 3 并发生此问题
  • Fiddler 使 HttpWebRequest/HttpClient 行为出现意外

    只是想问一下 在 Fiddler 启动时尝试将某些文件上传到服务器时 是否有人遇到使用 HttpWebRequest 类 甚至新的 HttpClient 的问题 我遇到了这个错误 即允许写入流缓冲的财产HttpWeb请求当 fiddler
  • 使用 numpy 进行图像翻译

    我想执行一定量的图像平移 垂直和水平移动图像 问题是 当我将裁剪后的图像粘贴回画布上时 我只是得到一个白色的空白框 有人能发现这里的问题吗 非常感谢 img shape image shape translate image percent
  • 在更新中使用子查询总是需要在 where 子句中使用子查询?

    这对我来说是一个常见的 SQL 查询 update table1 set col1 select col1 from table2 where table1 ID table2 ID where exists select 1 from t
  • 如何将 Malli 的一个模式包装在另一个模式中?

    这是我的有效负载 m validate readingDetails schema readingCode Code1 readingNumber twenty two round off readingCheck First readin
  • OpenCV中如何从n维数组中获取最大值

    我试图从 3 d Mat 中获取最大值 但 minmaxIdx 和 mixmaxloc 都未能做到这一点 int sz BIN BIN BIN Mat accumarray 3 sz CV 8U Scalar all 0 double te
  • 使用 C++ Catch 测试浮点 std::vector

    Catch C 单元测试框架是否有可能比较基于浮点类型的 std vector 我知道我可以比较两个容器和每个元素的大小 使用近似值 但这很混乱 积分类型向量的比较工作正常 现在 我必须使用这样的结构 REQUIRE computed si
  • 使用极坐标投影将颜色条添加到 pcolormesh

    我正在尝试使用极坐标投影将颜色条添加到 pcolormesh 图中 如果我不指定极坐标投影 该代码可以正常工作 指定极坐标投影后 会生成一个很小的图 并且颜色条不存在 我是在做一些愚蠢的事情 还是这是一个错误 我在 Fedora 20 上使
  • WooCommerce:将产品属性添加到产品中的现有属性中

    我正在努力为产品添加属性 我有一系列关键字想要添加到产品中 clean keywords array cake cup cakes term taxonomy ids wp set object terms get the ID clean
  • 如何在第三次出现某些内容时分割字符串? [复制]

    这个问题在这里已经有答案了 我知道 爆炸 会分割字符串并将其转换为每次出现的数组 但是我如何在第三次出现时拆分并保留第三次出 现后的所有内容 实施例1 split explode abc def ghi State 32 1 14 16 5
  • 如何显示回合时间

    使用 SQL Server 2005 Table1 ID Intime Outtime 001 00 21 00 00 48 00 002 08 23 00 13 45 00 003 00 34 00 00 18 00 我需要显示时间 例如
  • 在 Rails3 的控制器上使用 number_with_ precision

    我想在控制器上使用这个辅助方法 有什么办法可以实现这个目标吗 可能不是一个好主意 但如果必须的话 请像这样包含助手 class WhateverController include ActionView Helpers NumberHelp
  • Eclipse Indigo - JPA 验证问题

    我正在使用 eclipse indigo 并且遇到 JPA 验证问题 我的命名查询是 from Person p where p name name 并且有这个错误 The query does not start with a valid
  • NodeJS + Mongo:如果不存在则插入,否则更新

    我的 mongodb 集合中有一个对象 其架构是 instruments A B C id oid 508510cd6461cc5f61000001 我的收藏可能有这样的对象 但也可能没有 我需要检查带有关键 仪器 的对象是否存在 请注意