如何使用 C# 驱动程序更新 MongoDB 中数组子文档中包含的数组子文档中的字段?

2024-03-17

我在 MongoDB 中有一个文档集合,其结构如下(有多个容器文档,每个包含Sessions,每个会话包含1个Order,每个Order包含多个Item):

{
  "Sessions" : [{
      "ID" : "1882a092-d395-45d1-b36b-e2fa3df81b95",
      "Order" : {
        "Items" : [{
            "_id" : "a9c94a5e-10ef-433d-9c63-f4555eb7c2a7",
            "Title" : "UPDATE THIS",
          }]
      }
    }],
  "_id" : "1b640bc4-fdb4-49b1-9c60-e4c6f1bd0405"
}

我想更新Title给定的Item在会话中的订单内,同时知道_id项目的(我也知道会话的 ID,如果有帮助的话):

我已经尝试过以下方法:

col.Update(Query.EQ("Sessions.ID", sessionID),
                Update.Set("Sessions.$.Order.Items.Title", newTitle));

col.Update(Query.EQ("Sessions.Order.Items._id", id),
                Update.Set("Sessions.Order.Items.$.Title", newTitle));

两者都抛出异常WriteConcern detected an error 'cannot use the part (Sessions of Sessions.Order.Items.0.Status) to traverse the element ...。我还尝试了使用组合查询的不同组合Query.And这可能毫无意义,以至于不值得在这里发布。

如何使用 C# 驱动程序更新文档数组中包含的子文档中的字段?

我意识到这不能单独使用位置运算符来完成(并且位置运算符不会神奇地匹配内部数组)。

我正在寻找开箱即用的解决方案,如何在不更改架构的情况下完成此类更新。


您没有更新子文档的子文档。 您正在更新父数组子文档内的数组子文档的一个字段。

您可以更新first通过代码吹出的元素

col.Update(Query.EQ("Sessions.ID", sessionID),
                Update.Set("Sessions.$.Order.Items.0.Title", newTitle));

使用简单的更新查询您无法更新all元素的标题。 此链接可能对您有帮助(使用自定义 JavaScript 更新查询)

如何在 MongoDB 中多次更新嵌套数组? https://stackoverflow.com/questions/26438864/how-to-multi-update-of-a-nested-array-in-mondodb/26439401#26439401

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

如何使用 C# 驱动程序更新 MongoDB 中数组子文档中包含的数组子文档中的字段? 的相关文章

  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob

随机推荐

  • 非法动态引用

    jniPath val subProjectPath projectDependencies value map module gt jniPath in LocalProject module name value val path li
  • 如何在 FluentValidation 中使用 Reflection?

    我有一个场景 我想使用反射来使用 Fluent Validation 进行验证 像这样的事情 public class FooValidator AbstractValidator
  • 从 Java 列表生成 p:tabs

    我想从 Java 列表创建 Primefaces 选项卡 我测试了这段代码
  • 在 mysql 更新查询中查找受影响的字段

    我这里有一个复杂的问题 假设我的表中有 5 个字段 而我的一个用户在运行 mysql 更新查询的表单的帮助下仅更新了 2 个字段 那么有什么办法可以查出哪两个字段被改变了 好吧 我不确定这是否是最好的方法 但它会起作用 请注意 语法适用于
  • 将通用列表数组绑定到 GridView

    您好 我有一个返回 问题 数组的列表 我的问题是如何将其绑定到网格视图 当我尝试调用 Question Ordinal 时 我发现它在数据源中不存在 我正在使用以下代码 GridView1 DataSource myList GetQ Gr
  • 堆栈在缓存中吗?

    在现代计算机中 我知道当前代码区域位于高速缓存中 然而 在许多计算机语言实现中 本地 自动 变量将位于堆栈上 因此会对堆栈进行大量内存访问 在正常架构中 堆栈是否位于另一个缓存中 如果不是 则假设堆栈可以重新定位到 本地 即非常靠近当前代码
  • chrome 扩展:页面完成加载 javascript 后运行脚本

    当页面完成加载时 这根本不会触发 基本上 当我单击浏览器操作按钮时 它会触发它 并且在页面加载时 它将运行一个脚本 在我的background js中 var toggle false chrome browserAction onClic
  • 如何使用 JMeter 发送动态 URL 参数

    我想将 URL PATH 发送为 controller 1 1 controller 2 2 start 但是参数 2controller 2是动态的 如何发送该参数 使参数成为变量 controller 2 controller2 par
  • 使用 swift for Mac 应用程序获得管理权限

    我正在编写一个软件 需要经常以root权限运行命令 现在 我通过询问用户一次密码 保存密码 然后将该密码提供给NSAppleScript作为参数with administrator privileges 这显然对用户来说确实不安全 因为有人
  • 使用 Obj-C 的帖子发送 amp (&)

    我正在发送包含文本 数字和数据的帖子 数字和数据工作正常 但我在文本方面遇到问题 因为它可能包含与号 例如 page php text Hello World Space 现在我发现 被服务器接收到 但读起来就像一个新变量开始一样 所以它看
  • pyqtdeploy:无法检测到 MSVC2015 或 MSVC2017

    我第一次尝试 pyqtdeploy 遵循文档 https www riverbankcomputing com static Docs pyqtdeploy demo html 运行 build demo py 时出现以下错误 C User
  • 将phoneGap 与本机iOS 应用程序集成

    我正在尝试创建一个使用本机功能和phoneGap 框架组合的应用程序 本机应用程序有一个按钮 单击该按钮后 phoneGap ui 必须添加到视图中 有什么办法可以实现这一点吗 有相同的教程吗 是的 这是可能的 尽管您可能会让自己陷入一些头
  • 如何确定我是否在 Android Wear 中运行?

    我在 Android Studio 中有一个移动和穿戴模块 它们都使用 核心 代码库 在该核心代码中 我如何确定我的代码是否在 移动 模块的 穿戴 上运行 我应该使用屏幕尺寸吗 尽管这没有正式记录 据我所知 您可以通过调用以下任一方法来确定
  • 使用 pyautogui 输入 unicode 字符串

    我正在创建一个自动测试应用程序pyautogui库 我想用typewrite将文本输入到表单中的方法 但我的一些输入字符串中含有 unicode 字符 例如 N st 根据文件typewrite只能按单字符键 所以它只是忽略了 特点 您能建
  • 使用 EC2 + Rails + Nginx + Capistrano 重新启动时 Puma 重新启动失败

    我已成功使用 capistrano 将我的 Rails 应用程序部署到 Ubuntu EC2 部署时一切都运行良好 Rails 应用程序名称是 deseov12 我的问题是 Puma 不会在启动时启动 这是必要的 因为生产 EC2 实例将根
  • 如何为其他类成员函数编写模板包装方法?

    我尝试为具有不同参数的不同函数创建一个模板化包装器 设置是一个类A基本实现有两种方法foo and bar 另一堂课B应包装这些方法并添加新功能 以下链接中的解决方案对于非类函数非常有效 c 11 模板化包装函数 https stackov
  • 如何使用 JavaScript 添加到现有的 dataTransfer.files 对象?

    我正在创建一个拖放文件上传区域 当我一次上传多个文件时 它可以工作 但我需要它能够支持分多个阶段上传 我知道下面的问题是我每次都设置文件 但我无法找出每次调用该方法时将更多文件添加到 dFiles 的正确方法 var dFiles var
  • openssh/opensshportable,我应该从内存中提取哪个密钥?

    我想在 OpenNebula 等虚拟环境中解密 ssh 流量 为此 我从 openssh opensshportable 代码的 key derive keys 函数中提取了 6 个 ssh 密钥 IV 加密密钥和完整性密钥 如果我跟踪服务
  • 如何向 PHP SoapVar 对象添加属性?

    如何向 PHP SoapVar 对象添加属性 PHP5 SoapClient SoapVar 我有一个 SOAP 客户端请求情况 其中有重复的部分 答案 每个部分都有一个问题和选择 这是测验评分过程的一部分 根据我在 PHP5 SOAP 客
  • 如何使用 C# 驱动程序更新 MongoDB 中数组子文档中包含的数组子文档中的字段?

    我在 MongoDB 中有一个文档集合 其结构如下 有多个容器文档 每个包含Sessions 每个会话包含1个Order 每个Order包含多个Item Sessions ID 1882a092 d395 45d1 b36b e2fa3df