如何仅导入不存在的文档?

2024-01-06

我正在使用 mongo import 来导入一堆 json,并且我正在寻找一种仅导入不存在的记录的方法(可以通过 oid 检查)。 我尝试使用 --upsert 但它会更新记录,如果它已经存在,我想完全忽略它。

有任何想法吗...?


mongoimport 的默认行为不应该是覆盖现有文档: 在 JS shell 中,我在集合“testimport”中创建了一个文档

> db.testimport.save({_id:1, x:"a"})
> db.testimport.find()
{ "_id" : 1, "x" : "a" }
> 

以下是文件 import.json 的内容。它包含 2 个文档,一个具有唯一的 _id,另一个具有重复的 _id。

import.json
{_id:1, x:"b"}
{_id:2, x:"b"}

在新的终端窗口中,运行 mongoimport:

$ ./mongoimport -d test -c testimport import.json -vvvvv 
Wed Apr  4 19:03:48 creating new connection to:127.0.0.1
Wed Apr  4 19:03:48 BackgroundJob starting: ConnectBG
Wed Apr  4 19:03:48 connected connection!
connected to: 127.0.0.1
Wed Apr  4 19:03:48 ns: test.testimport
Wed Apr  4 19:03:48 filesize: 29
Wed Apr  4 19:03:48 got line:{_id:1, x:"b"}
Wed Apr  4 19:03:48 got line:{_id:2, x:"b"}
imported 2 objects
$

尽管 mongoimport 的输出显示导入了两个对象,但 _id:1 的文档并未被覆盖。

> db.testimport.find()
{ "_id" : 1, "x" : "a" }
{ "_id" : 2, "x" : "b" }
>

如果使用 --upsert 标志,则 _id:1 的文档将被更新:

$ ./mongoimport -d test -c testimport import.json -vvvvv --upsert
Wed Apr  4 19:14:26 creating new connection to:127.0.0.1
Wed Apr  4 19:14:26 BackgroundJob starting: ConnectBG
Wed Apr  4 19:14:26 connected connection!
connected to: 127.0.0.1
Wed Apr  4 19:14:26 ns: test.testimport
Wed Apr  4 19:14:26 filesize: 29
Wed Apr  4 19:14:26 got line:{_id:1, x:"b"}
Wed Apr  4 19:14:26 got line:{_id:2, x:"b"}
imported 2 objects
$

在JS shell中,我们可以看到_id:1的文档已经更新:

> db.testimport.find()
{ "_id" : 1, "x" : "b" }
{ "_id" : 2, "x" : "b" }
>

这不是您正在经历的行为吗?上面是用2.1.1-pre版本测试的,但我不相信mongoimport代码已经改变了一段时间。

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

如何仅导入不存在的文档? 的相关文章

  • 使用 Java 为 MongoDB 中的外部值分配权重

    这就是我如何创建具有不同权重的索引蒙戈外壳 db blog ensureIndex content text keywords text about text weights content 10 keywords 5
  • 将MongoDb atlas数据库导出到本机Mongo compass

    我在 Atlas 中有一个名为 test 的远程数据库 我想将集合名称 image table 下载为 JSON 文件 在 Mac 终端中 mongoexport db test collection image table image j
  • 从命令行创建 MongoDB 用户

    我已经建立了一个 MongoDB 数据库admin仅具有管理权限的用户 无权读取或写入数据库 我现在想做的是 添加新数据库 并向该数据库添加一个新用户 并且 我需要从命令行执行此操作 所以我尝试 mongo admin u admin p
  • 无法制作带有身份验证的基本 mongo shell 脚本

    我有一个非常复杂的问题 我认为我可以通过编写 mongo shell 脚本来解决 但我什至无法建立一个简单的连接 我有一个本地 mongo 数据库 它需要一个用户名 密码 我通常这样访问 mongo admin u
  • 无法在 mongodb 中创建角色

    我正在尝试在 mongodb 中创建一个新角色 但它给了我错误 gt use Admin switched to db Admin gt db createRole role executeFunctions privileges reso
  • MEAN 堆栈文件上传

    我最近开始使用 MEAN Stack 进行编程 目前正在实现某种社交网络 一直使用 MEAN io 框架来做到这一点 我现在的主要问题是让文件上传正常工作 因为我想做的是将文件从表单接收到 AngularJS 控制器中 并将其与更多信息一起
  • 更新 MongoDB 中精确元素数组中的字段

    我有一个结构如下的文档 id 43434 heroes nickname test items nickname test2 items Can I set的第二个元素items数组中嵌入对象的数组heros with nickname t
  • J=1 且 W=Majority 的 MongoDB 副本集上是否仍会发生回滚?

    我一直在阅读文档 根据我的理解 我可以看到仍然可能发生回滚的情况 写入到主数据库 确认日志已写入磁盘 大多数辅助节点确认写入但不写入磁盘 整个集群断电 当电源恢复时 主设备由于某种原因无法启动备份 次要角色扮演主要角色 最初的主节点最终启动
  • MongoDB list集合过滤器

    我正在使用 Node js 我正在尝试过滤必须排除集合 出口 的集合并检索所有其他集合 但我似乎无法弄清楚语法 我试过了 db listCollections filter outlets toArray err docs 有什么建议么 您
  • Node js POST请求错误错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头

    我使用 Node JS Express 和 Mongo DB 开发了 REST 服务 我已经定义了一个 POST 请求来将用户添加到数据库表中 当我尝试 在本地主机上 POSTMAN 的 REST 服务时 他会工作并将用户添加到表中 但节点
  • 当数据大小超过 500 万时,在 mongoDb 中从 java 调用 find() 查询会变慢

    我的应用程序在从 java 的 mongoDb 中执行 find 操作时遇到性能问题 当数据大小超过 500 万时 需要花费大量时间 有时搜索单个文档需要数千毫秒 任何意见都将受到赞赏 java查找查询 db test find flag
  • Mongodb集合对象总小时数集合

    mongodb 收集数据 提前感谢 id ObjectId 5f7b3d78e95af70e17efd6d6 employeeId 2707 employeeName HrJosh status Present date 2020 10 1
  • 将 mongoid 会话设置为只读

    我有不同的会话mongoid yml 其中一个会话提供来自静态 mongo 数据库的数据 我想知道是否有可能以只读模式 加载 会话 以便不进行任何更改save create destroy or destroy all可以制作 我的mong
  • 如何在聚合框架中按位置修改数组中的值

    假设有一个简单的文档 array a b c d 如何修改second值在聚合 With update这很简单 db collection updateOne set array 1 B gives array a B c d 在聚合框架中
  • MongoDB:查询速度慢,即使有索引

    我有一个网页 它使用 MongoDB 来存储和检索各种测量结果 突然 在某个时候 我的网页变得如此缓慢 以至于无法使用 事实证明 我的数据库是罪魁祸首 我进行了搜索 但没有找到任何解决我的问题的方法 我很抱歉 因为我对 MongoDB 还很
  • Mongo中如何定义每个分片的分片范围?

    比方说 该文件是 x Number 我有 3 个碎片 除了自动分片之外 我可以具体定义 shard1 仅包含数据 x 你可以 可以手动预分割块 如下所述 http www mongodb org display DOCS Splitting
  • Mongo 可审核的 ZonedDateTime 字段在 Spring Boot 2 中不起作用

    在 Spring Boot 项目中 我使用 CreatedDate 之类的注释来保存有关创建 更新相应文档的日期的信息 整个项目都使用 ZonedDateTime 因此带注释的字段也是 ZonedDateTime 为了实现 Mongo 的日
  • mongoose node.js,使用 $lt 和 $gt 进行查询不起作用

    我想要获取最后分数在 15 到 20 之间的所有学生 为此 我使用 mongoose 在 mongoDB 中执行以下查询 模型工作正常 所有其他查询都正常 Pupils find marks 1 value lt 20 marks 1 va
  • 有没有办法从 webstorm (mac) 运行 mongod

    在这个线程中 从 webstorm 运行 mongod exe https stackoverflow com questions 21068248 running mongod exe from webstorm 它指出 mongo4id
  • MongoDB 的简单 HTTP/TCP 健康检查

    我需要为 Docker 容器内的 MongoDB 实例创建运行状况检查 尽管我可以采取解决方法并通过 CLI 使用 Mongo Ping 但最好的选择是创建一个简单的 HTTP 或 TCP 测试 标准 ping 测试中默认 27017 端口

随机推荐

  • 良好实践:纯虚方法的默认参数

    我创建了一个抽象基类 它有一个带默认参数的纯虚方法 class Base virtual someMethod const SomeStruct t 0 0 class Derived public Base virtual someMet
  • 从 Windows 中的所有子文件夹中删除 CVS 文件夹

    我是bat文件的新手 我有一个文件夹 假设为 A 该文件夹的子文件夹为 B C D 这些文件夹再次有自己的子文件夹 我的问题是每个子文件夹和父文件夹都有 CVS 文件夹 我想从每个目录中删除该文件夹 如何在bat文件中做到这一点 转到要删除
  • UIKit:当子视图的宽度增加超过屏幕边缘时,UIScrollView 自动滚动

    在 iPhone 的背景下 我有一个UIScrollView含有一个UIImage 当用户点击屏幕内的UIImage a UITextField添加到用户触摸的位置 用户可以编辑此内容UITextField 并且文本字段将根据是否添加或删除
  • Gradle 插件 google-services 不适用于 gradle-experimental:0.6.0-alpha7

    我想使用 gradle experimental 0 6 0 alpha7 来使用 Android Studio 1 5 1 中的 NDK 构建集成 但现在我的 google services json 不再转换为 R xml global
  • 如何将 Launchpad 项目(包括 Bug/问题)迁移到 GitHub?

    将代码从 Launchpad bzr 迁移到 GitHub git 并不是什么大问题 但是有没有一种方法可以将 Bug tickets 从 Launchpad 项目迁移到 GitHub 项目呢 有一个项目叫LP2GH http lp2gh
  • Unity:Android 上的 FPS 随机下降到接近零(提供了很多线索)

    首先感谢您花时间查看此内容 我们感谢您的任何意见 关于我们现在面临的问题 在过去的几个月里 我们在 Android 上的游戏应用程序中遇到了随机 fps 下降到接近于零的情况 并且到目前为止尚未成功调试该问题 它在完全随机的时间发生 有时在
  • 如何在 Clojure 中替换 Java 嵌套 for 循环?

    我创建了一个非常简单的嵌套循环示例 并且正在努力编写等效的 Clojure 代码 我一直在尝试通过列表理解来做到这一点 但无法得到相同的答案 任何帮助表示赞赏 public class Toy public static void main
  • 报告服务打印使 IE 崩溃

    我们使用 SSRS 2008 R2 已经一年多了 打印效果很好 随着Windows 7上的客户端浏览器升级到IE10 当用户单击打印图标时 一些浏览器会崩溃 故障模块是rsclientprint64 dll 为了尝试解决此问题 我手动将 d
  • head 标签中 src/href 属性末尾有奇怪的字符

    快速问题 为什么 drupal 在末尾添加字符src or href中的属性link and script页面头部的标签 我有这个 对于加载的每个样式表和脚本都是相同的 我不明白为什么要这样做 我想这可能就是我的主题在 IE 中一团糟的原因
  • 如何在 ruby​​ Fiddle 中处理数组指针

    我正在尝试从 Ruby FFI 切换到 Fiddle 它现在是 Ruby std lib 的一部分 虽然它没有文档记录 但我很难弄清楚如何处理数组和指针 特别是 如何编写 C 函数的 Fiddle 接口 如下所示 void my func
  • 在 WPF 中使用数据绑定时 OxyPlot 不刷新

    我正在异步获取数据并尝试通过 LineSeries 填充绘图 但更新绑定集合 ObservableCollection 时绘图不会刷新 注意 当绑定集合更改时 我有一个 XAML 行为来调用 InvalidatePlot true 谁能解释
  • 与 .Net 兼容的 RSA 密钥(XML 格式)

    如何生成基于 xml 的 RSA 密钥 私有 公共 该密钥应与 NET 环境兼容 我尝试了 PHP 中的 phpseclib 模块 但它不兼容 NET 请建议我有什么方法可以在 Java 中生成基于 xml 的 RSA 密钥吗 实际上我正在
  • 具有私有集的只读 List

    我怎样才能暴露List
  • 为不在包中的 R6 类创建 Rd 文档文件

    我正在尝试创建一些包含一些 R6 类的脚本的文档 作为示例 我使用此处名为 Person 的 R6Class https www tidyverse org blog 2019 11 roxygen2 7 0 0 https www tid
  • 在提交表单 html5 之前调整图像大小

    我需要在客户端中调整图像大小并在提交之前将其添加到表单中 这是完整的 html
  • 如何从数据库表中选择4个大小相等的结果集

    我有一个包含很多行的 SQL Server 数据库表 我正在使用一个使用该表作为数据源的程序 该程序本身不支持多线程 因此我必须运行该程序的多个实例 并且对于每个实例 我需要告诉要处理整个基础数据的哪一部分 我一直在使用此语句将基本数据 表
  • 定期 iOS 后台位置更新

    我正在编写一个需要后台位置更新的应用程序高精度 低频率 解决方案似乎是一个后台 NSTimer 任务 它启动位置管理器的更新 然后立即关闭 这个问题之前已经被问过 如何在我的 iOS 应用程序中每 n 分钟更新一次后台位置 https st
  • 以编程方式导入/导出 VS 设置?

    有没有办法通过 Visual Studio 扩展 即通过 Visual Studio API 导入 导出 Visual Studio 设置 我想将一些特定设置导出到本地文件 就像 VS 导入和导出设置向导所做的那样 但是当然没有 UI 交互
  • Modernizr 与 HTML shiv

    如果我只需要旧版浏览器识别 HTML5 标签 我应该使用它 现代化 http www modernizr com 或流行的HTML5 刀 http code google com p html5shiv 另外 如果我不需要设置 HTML5
  • 如何仅导入不存在的文档?

    我正在使用 mongo import 来导入一堆 json 并且我正在寻找一种仅导入不存在的记录的方法 可以通过 oid 检查 我尝试使用 upsert 但它会更新记录 如果它已经存在 我想完全忽略它 有任何想法吗 mongoimport