你能在 Mongo 中为 $addToSet 指定一个键吗?

2024-04-05

我有一个文件:

{ 'profile_set' :
  [
    { 'name' : 'nick', 'options' : 0 },
    { 'name' : 'joe',  'options' : 2 },
    { 'name' : 'burt', 'options' : 1 }
  ] 
}

并想添加一个新文档到profile_set如果名称尚不存在则设置(无论选项如何)。

所以在这个例子中如果我尝试添加:

{'name' : 'matt', 'options' : 0}

它应该添加它,但是添加

{'name' : 'nick', 'options' : 2}

不应该执行任何操作,因为具有名称的文档已存在nick尽管option是不同的。

Mongo 似乎与整个元素匹配,我最终检查它是否相同,最后得到

profile_set containing [{'name' : 'nick', 'options' : 0}, {'name' : 'nick', 'options' : 2}]

有没有办法做到这一点$addToSet或者我必须按下另一个命令?


您可以满足您的资格update带有一个查询对象,如果name已经存在于profile_set。在外壳中:

db.coll.update(
    {_id: id, 'profile_set.name': {$ne: 'nick'}}, 
    {$push: {profile_set: {'name': 'nick', 'options': 2}}})

所以这只会执行$push对于具有匹配的文档_id以及没有的地方profile_set元素其中name is 'nick'.

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

你能在 Mongo 中为 $addToSet 指定一个键吗? 的相关文章

随机推荐

  • 以编程方式向 PayPal 收取定期付款费用

    How to 以编程方式 不是通过我们的 PayPal 仪表板手动 向我们服务的 PayPal 订户收取非固定金额自动计费的账单 每月 我会推荐 PayPal 的参考交易来实现您的目的 请查看下面的链接了解其详细信息 https devel
  • 如何快速转换大数据帧中的不同时间格式?

    我想计算不同时间维度的长度 但在处理数据框列中两种略有不同的时间格式时遇到问题 原始数据框列大约有一百万行 两种格式 如示例代码所示 混合在一起 示例代码 time lt c 2018 07 29T15 02 05Z 2018 07 29T
  • Python:如何确定子进程子进程已全部运行完毕

    我试图检测安装程序何时从 Python 脚本中完成执行 具体来说 该应用程序是Oracle 10gR2数据库 目前我正在将 subprocess 模块与 Popen 一起使用 理想情况下 我只需使用 wait 方法来等待安装完成执行 但是
  • PHP 向登录/注销用户隐藏/显示菜单项的更简单方法

    是否有更简单更有效的方法来隐藏 显示登录 注销用户的菜单项 看来我不必用重复的菜单项再次复制整个菜单 菜单项的顺序可能不同 如下所示 您可以在下面的示例中看到我已添加到陈述 ul class nav navbar nav li class
  • Spring Kafka中检测broker断开连接

    我正在尝试为我的卡夫卡消费者编写健康检查 当应用程序启动并运行时 我关闭 Kafka 我看到很多 Connection to node 1001 127 0 0 1 9092 could not be established Broker
  • 使用 GNU Parallel 和 Split

    我正在将一个相当大的文件加载到 postgresql 数据库中 为此 我首先使用split在文件中获取较小的文件 每个 30Gb 然后我使用以下命令将每个较小的文件加载到数据库中GNU Parallel and psql copy 问题是大
  • ImportError:Linux 上没有名为“cplex”Python 的模块

    我正在尝试在 HPC 机器 RedHatEntrepriseServer 上运行 python 脚本 管理员已经安装了 CPLEX 模块 但在 python 中导入 cplex 模块时仍然出现此错误 ImportError No modul
  • 选择下拉列表项 findbytext 不区分大小写 vb.net

    我想在用 VB NET 编写的 ASP NET 的下拉列表中选择一项 我在列表框中有这样的值和文本 Volvo Audi etc 但来自其他地方的大写值 VOLVO AUDI 这段代码 dropdownlist FindByValue CA
  • 是否可以从 SQL 查询执行文本文件?

    我有许多生成的 sql 文件 我想连续运行 我想从查询中的 SQL 语句 即查询分析器 Server Management Studio 运行它们 是否可以做这样的事情 如果可以的话 这样做的语法是什么 我希望有这样的事情 exec c t
  • boost::condition::timed_wait 的使用示例

    有人有如何最轻松地使用 boost condition timed wait 的示例吗 有一些关于该主题的主题here https stackoverflow com questions 2259025 how do i get boost
  • Python请求不上传文件

    我正在尝试使用 Python 请求重现此curl 命令 curl X POST H Content Type application gpx xml H Accept application json data binary test gp
  • 将目录树表示为递归列表

    我被某项任务困住了 我想要的是一个函数 给定目录路径 它将返回递归列表作为输出 输出的格式应为 myList dir subdir subdir fullFilePath 所以基本上我想将目录树表示为某个列表 我获取了所有文件 获取了每个文
  • 使用 Cocoa 确定两个日期之间的月数

    如何使用 Cocoa 计算两个日期之间的月数 谢谢 斯坦 NSInteger month NSCalendar currentCalendar components NSCalendarUnitMonth fromDate yourFirs
  • 如何为 MVC .Net Core 应用程序创建单个管理员用户

    我正在构建一个本质上是商店的网络应用程序 但我想为网站管理员提供一种简单的方法来添加新产品 但是我想限制网站的这一部分 以便只有管理员可以访问它 目前我对其他用户没有用处 我该如何做到这一点 以便任何拥有管理员用户名和密码的人都可以访问这些
  • ssl:身份验证方法 ssl 需要密码

    在尝试通过 Ansible 连接到 Windows 虚拟机时 我遇到了以下问题 TASK setup lt 10 xx xx xx gt ESTABLISH WINRM CONNECTION FOR USER winad admin on
  • 控制器文件已加载,但类不存在

    我在 Magento 中遇到此错误时遇到问题 控制器文件已加载 但类不存在 完整堆栈位于底部 我本质上是想遵循本教程 在 Magento 中创建新模块 HelloWorld http magento4u wordpress com 2009
  • 使用 DllImport 在 C# 中调用 OpenGL 函数?

    我目前正在为 OpenGL 开发一个 C 实用程序库 对于跨平台窗口管理 我使用 GLFW 并使用 DllImport 成功加载了 glfwCreateWindow 或 glfwMakeContextCurrent 等函数 现在我想使用 O
  • CentOS 和 Ubuntu 上的“常规文件”是什么?

    我的环境是 CentOS 6 9 Ubuntu 16 04 LTS GNU coreutils 8 4 有 test 命令来检查文件 f option man test shows f FILE FILE exists and is a r
  • 二叉树的 Herbrand 宇宙、Herbrand 基础和 Herbrand 模型(序言)

    什么是二叉树的 Herbrand 宇宙 Herbrand Base 和 Herbrand Model binary tree empty binary tree tree Left Element Right binary tree Lef
  • 你能在 Mongo 中为 $addToSet 指定一个键吗?

    我有一个文件 profile set name nick options 0 name joe options 2 name burt options 1 并想添加一个新文档到profile set如果名称尚不存在则设置 无论选项如何 所以