如何返回我在嵌套数组中查找的元素?

2024-02-22

我有一个这样的数据库:

[
   {
      "universe":"comics",
      "saga":[
         {
            "name":"x-men",
            "characters":[
               {
                  "character":"wolverine",
                  "picture":"618035022351.png"
               },
               {
                  "character":"cyclops",
                  "picture":"618035022352.png"
               }
            ]
         }
      ]
   },
   {
      "universe":"dc",
      "saga":[
         {
            "name":"spiderman",
            "characters":[
               {
                  "character":"venom",
                  "picture":"618035022353.png"
               }
            ]
         }
      ]
   }
]

通过这段代码,我设法更新数组中的一个对象。特别是对象所在character: wolverine

db.mydb.findOneAndUpdate({
        "universe": "comics",
        "saga.name": "x-men",
        "saga.characters.character": "wolverine"
    }, {
        $set: {
            "saga.$[].characters.$[].character": "lobezno",
            "saga.$[].characters.$[].picture": "618035022354.png",

        }
    }, {
        new: false
    }

)

它返回我的所有文档,我只需要匹配的文档

我想返回已更新的对象,而不必对数据库进行更多查询。

Note

我被告知我的代码不能正常工作,显然我的查询更新这个问题很糟糕,我想知道如何修复它并获取与这些搜索条件匹配的对象。

换句话说,我怎样才能得到这个输出:

           {
              "character":"wolverine",
              "picture":"618035022351.png"
           }

在使用过滤器的单个查询中

    {
     "universe": "comics",
     "saga.name": "x-men",
     "saga.characters.character": "wolverine"
    }

我的 MongoDB 知识阻止我纠正这个问题。


使用shell方法findAndModify https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/以满足您的需求。

但不能使用位置字符$ https://docs.mongodb.com/manual/reference/operator/update/positional/#up._S_在 MongoDb 中投影时不止一次,因此您可能必须在客户端自己跟踪它。

Use arrayFilters https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/#update-nested-arrays-in-conjunction-with更新深层嵌套的子文档,而不是位置 all 运算符$[] https://docs.mongodb.com/manual/reference/operator/update/positional-all/#up._S_%5B%5D.

下面是一个有效的查询 -

var query = {
    universe: 'comics'
};

var update = {
    $set: {
        'saga.$[outer].characters.$[inner].character': 'lobezno',
        'saga.$[outer].characters.$[inner].picture': '618035022354.png',
    }
};

var fields = {
    'saga.characters': 1
};

var updateFilter = {
    arrayFilters: [
        {
            'outer.name': 'x-men'
        },
        {
            'inner.character': 'wolverine'
        }
    ]
};

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

如何返回我在嵌套数组中查找的元素? 的相关文章

  • MongoDb 注册类映射

    我有以下代码 我希望 MiscellaneousData 覆盖抽象的 MiscellaneousDataBase 然而 IdMemberMap 总是出现空值 使用独立的 正常 类是可行的 if BsonClassMap IsClassMap
  • Spring Data MongoDB:聚合框架 - 使用嵌套属性进行排序会抛出无效引用

    I found Spring论坛上的这篇文章 http forum spring io forum spring projects data nosql 130522 spring data mongodb aggregation fram
  • MongoDB 日志文件和 oplog 有什么不同?

    我最近开始使用 Mongodb 并尝试探索副本集和崩溃恢复 我读过它就像日志文件写入头重做日志文件一样 oplog 文件是每个写入活动都将被写入的文件 这两个有什么区别 我们在主站和从站上都有操作日志吗 请发布任何可以阐明该领域的网络链接
  • MongoDB C# 驱动程序检查身份验证状态和角色

    这是我使用 MongoDB 身份验证机制登录 MongoDB 的代码 try var credential MongoCredential CreateMongoCRCredential test admin 123456 var sett
  • MongoDB聚合选择性项目

    我在聚合聚合期间遇到了重塑文档的问题 基本上我想根据条目的类型将条目推送到字段中 我的结构如下 id P1 entities type A val X type B val X type A val Y 我想 unwind 和 projec
  • 如何查看 Realm ObjectId 是否等于 String (JavaScript)

    我正在使用 MongoDB 的 Realm 并尝试查看 ObjectId 是否等于具有相同字符的字符串 我尝试将 ObjectId 转换为字符串 反之亦然 但无论我尝试什么 它都不会将它们视为相等 即使这些值完全相同并且当我记录它们时它们看
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • model.save() 返回无效输出

    我正在使用本文中的 Node js mongodb 和express 对 REST Api 进行简单测试 MERN 第一部分 使用 Node js 和 Express 构建 RESTful API https medium com week
  • 我需要显式关闭连接吗?

    我持有一个实例MongoClient and DB在我的应用程序中 每次我想执行某些操作时 我都会调用getCollection 我想知道是否需要显式关闭连接 就像connection close 在 JDBC 中 强调一下 我只有一个Mo
  • MongoDB:尝试从 JSON 读取 Long 导致 java.lang.Integer 无法转换为 java.lang.Long

    我有一个代码可以从 MongoDB 读取特定格式的数据 我需要测试一下 为此 我使用要测试的数据创建一个 JSON id ObjectId 57552e32e4b0839ede67e0af serial 574000690 startDat
  • 如何使用 mongodb 处理多个操作并获取计数?

    在这里 我为图表中的显示计数日期创建了一个查询 我已经使用了mongodb 我有一个对象 在该对象中存储多个数据并用一个值分隔Action 我想显示计数日期明智的操作 例如评论 就像两个操作计数都想显示一样 现在我只是显示评论数 我也想得到
  • GET Ajax 在响应中返回 html 代码而不是 json 对象

    我有一个 ajax get 请求 如下所示 我正在使用 Nodejs Express 向 openshift 中的 server js 发出 GET 请求 但是 我在响应方法中获取 html 内容而不是 json 对象 这两个请求都是针对同
  • 错误:子进程失败,退出,错误号为 51 MongoDB

    重新启动 MongoDB 时出现此错误 我正在使用 Mongo 3 2 4 并在新机器上进行此设置 Starting mongod about to fork child process waiting until server is re
  • 使用 Mongoose 将数组(“标签”)保存到 MongoDB

    我正在玩 Mongoose 但在保存到数组时遇到问题 例如 我在页面上有一个以逗号分隔的输入字段tags 我从 req body tags 中获取这些内容 删除空格 然后用逗号分隔它们以获得标签数组 现在 如何将该数组保存回我的数据库 我猜
  • NodeJS 中的密码重置

    我已经设置使用 NodeJS Passport 更新用户的密码 我遵循了这个很棒的指南 http sahatyalkabov com how to implement password reset in nodejs http sahaty
  • 如何在 Mongoose 中定义排序函数

    我正在开发一个小型 NodeJS Web 应用程序 使用 Mongoose 访问我的 MongoDB 数据库 我的收藏的简化架构如下 var MySchema mongoose Schema content type String loca
  • mongodb 通配符匹配特定键的所有值[重复]

    这个问题在这里已经有答案了 我试图弄清楚如何匹配一个键并返回该键的所有值 是否可以将值作为通配符给出 我想在值上使用通配符返回该特定键的所有内容 db collection find key 我还希望这也能返回整个集合 其中的键也与通配符值
  • 猫鼬查找并删除

    我正在尝试删除满足查询的多个文档 但是 我需要这些文档的数据将它们存储在单独的集合中以实现撤消功能 我让它工作的唯一方法是使用多个查询 Data find query exec function err data Data remove q
  • java.lang.IllegalArgumentException:在 MongoDB 中执行聚合的引用无效

    我收集了一份文件 id ObjectId 5ab273ed31fa764560a912f8 hourNumber 21 errorSegments agentName agentX agentName agentY 我正在尝试在 Sprin
  • 对开始和结束范围进行分组和计数

    如果我有以下格式的数据 id 1 startDate ISODate 2017 01 1T00 00 00 000Z endDate ISODate 2017 02 25T00 00 00 000Z type CAR id 2 startD

随机推荐

  • macOS 钥匙串 ACL 如何确定哪些应用程序具有访问权限?

    当应用程序将项目保存到钥匙串时 macOS 会将该应用程序添加到访问控制列表中 以便您的应用程序稍后可以访问它 如果您尝试从其他应用程序访问该项目 macOS 将显示系统提示 询问用户是否允许访问 这是有记录的here https deve
  • sockaddr_in 未声明的标识符

    我正在遵循 beej 的网络指南 进展非常顺利 因为我对一切都很了解 而且他解释得很好 然而 当我想测试他向我展示的一些很酷的东西时 这是行不通的 我不确定 sockaddr in 到底在哪里声明 但也许这里有人会帮助我 这是我到目前为止所
  • Office 文档提示登录匿名 SharePoint 网站

    我有一个配置为匿名访问的 MOSS 07 站点 该站点内有一个文档库 也启用了匿名访问 当匿名用户单击该库中的 PDF 文件时 他或她可以毫无问题地阅读或下载该文件 当用户单击 Office 文档时 系统会提示他或她登录框 用户可以在不登录
  • 内联 MSIL/CIL

    我创建了以下简单方法 public static void Main Console WriteLine Hello world Console ReadKey true 然后我使用ILSpy获取MSIL代码 method public h
  • System.InvalidOperationException:无法解析类型依赖注入.net core web api的服务

    System InvalidOperationException 尝试激活 Pwc EMSWebapi UserManagementController 时无法解析类型 Pwc EMSWebapi IUserManagementServic
  • 如何从一组用户中提取电子邮件

    If I do User all pluck email 然后就可以正常工作了 但如果我这样做 arr Array new arr User all and then arr pluck email 这引发了以下错误 undefined m
  • 重写构造函数类

    下面是我的代码 我不明白这是什么错误 有谁可以指导一下吗 class State static String country static String capital State Constructor country America s
  • 连接两个向量同时转换一个向量的元素的最佳方法是什么?

    假设我有 std vector
  • wget:无法解析主机地址“github.com”

    我正在使用 Redhat UBI 映像构建 dockerfile 当我构建映像时 我得到 wget 无法解析主机地址 github com 我尝试添加一个不以 GitHub 开头的不同 URL 但该 URL 有效 不确定是什么问题 以下是我
  • NSFetchedResultsController 在 objectAtIndexPath 上崩溃?

    我在尝试访问以下对象时发生崩溃NSFetchedResultsController 2013 11 10 15 15 06 568 Social 11503 70b CoreData error Serious application er
  • 在 C#.NET 中动态转换为类型

    替代标题 在运行时动态转换为类型 我想将对象转换为将在运行时分配的类型 例如 假设我有一个分配字符串值的函数 来自TextBox or Dropdownlist to an Object Property 我如何将值转换为正确的类型 例如
  • 如何设置包装给定函数的函数的类型

    我正在做一个简单的memoize函数 它的作用是接受一个函数 并在缓存返回结果的地方做一些魔法 但基本上返回函数的类型memoize与给定的完全相同 但我遇到了错误 我不知道如何修复 当使用该函数并忽略我遇到的错误时 这些类型可以工作 我已
  • 用户代理字符串可以有多大?

    如果您要将用户代理存储在数据库中 您会容纳多大的数据库 我找到了这个技术网文章 http technet microsoft com en us library bb496341 aspx建议将 UA 保持在 200 以下 HTTP 规范中
  • PHP base64_decode C# 等效项

    我正在尝试模仿执行以下操作的 php 脚本 用 号替换 GET 变量的每个空格 var preg replace s GET var 解码为 Base64 base64 decode var 首先我添加了一个执行 Base64 解码的方法
  • 无符号整数取负值[重复]

    这个问题在这里已经有答案了 有人可以解释为什么 unsigned int 取负值吗 一个unsigned int应该只取正值 From 维基百科 http en wikipedia org wiki Integer 28computer s
  • 更改 nginx 工作进程运行的用户(Ubuntu 12.04)

    我在 Ubuntu 12 04 上手动安装了 nginx 当我跑的时候 configure我使用了以下选项 configure user www data group www data with http ssl module with h
  • 如何将此 csv 数据转换为条形图?

    旅游 旅游名称 开始 开始时的可用预订 结束 剩余预订量 csv 文件列 ID Tour Start End 12345 Italy 100 80 13579 China 50 30 24680 France 50 30 到目前为止我有这个
  • Ruby——寻找某种“Regexp unescape”方法

    我有一堆带有特殊转义代码的字符串 我想存储未转义的代码 例如 解释器显示 014 000 016smoothing 011mean 022color 011zero 016 但我希望它显示 检查时 为 014 000 016smoothin
  • 为了使用 Scrapy 正确发送电子邮件,我忘记了什么

    我想使用 Scrapy 发送电子邮件 我看了 throw 官网 发现可以这样做 from scrapy mail import MailSender from scrapy utils project import get project
  • 如何返回我在嵌套数组中查找的元素?

    我有一个这样的数据库 universe comics saga name x men characters character wolverine picture 618035022351 png character cyclops pic