mongoDB 中的嵌套对象文本搜索

2023-12-05

我不确定如何解决这个问题:
我想在 mongoDB 集合中搜索并仅返回适合搜索查询的嵌套对象(在所有字段上使用文本搜索)。

该集合中的所有文档都具有以下格式:

{
  arr: [
    {
      _id: 1,
      name: 'Random',
      description: 'Hello world'
    },
    {
      _id: 2,
      name: 'World',
      description: 'This is a random description'
    },
    {
      _id: 3,
      name: 'Random',
      description: 'Hi'
    }
  ]
}

在这种情况下,如果我的搜索查询是“world”,那么结果应该是:

[
  {
    _id: 1,
    name: 'Random',
    description: 'Hello world'
  },
  {
    _id: 2,
    name: 'World',
    description: 'This is a random description'
  },
  //... objects from other documents in the collection that fits the query
]

如果这在 mongoDB 中不可能,是否有任何 JavaScript 库可以实现这一点?非常感谢您的帮助!


使用聚合框架,它可能看起来像这样

db.getCollection('yourCollection').aggregate([
    {
        $unwind: '$arr'
    },
    {
        $match: {
            $or: [
                { 'arr.name': /world/i },
                { 'arr.description': /world/i }
            ]
        }
    },
    {
        $project: {
            _id: '$arr._id',
            name: '$arr.name',
            description: '$arr.description'
        }
    }
])

这将导致示例数据的以下输出:

{
    "_id" : 1,
    "name" : "Random",
    "description" : "Hello world"
}
{
    "_id" : 2,
    "name" : "World",
    "description" : "This is a random description"
}  

如果您需要一个包含问题中所示结果文档的数组,您可以简单地链接一个toArray()在管道末尾调用 - 请记住,如果结果集较大,这可能会导致内存消耗增加,如SSDMS在评论中。

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

mongoDB 中的嵌套对象文本搜索 的相关文章

  • 根据嵌套值使用数组过滤对象数组

    我正在尝试根据某些嵌套对象过滤数组 我准备了一些Fiddle http jsfiddle net NZnN2 249 输入数组如下所示 let arrayOfElements name a subElements surname 1 sur
  • 对自定义打字稿错误实例实施instanceof检查?

    打字稿有这个instanceof 检查自定义错误 https github com Microsoft TypeScript issues 13965问题 但尚不清楚我们需要做什么才能得到instanceof在职的 例如对于这个异常我们如何
  • 将鼠标悬停在图像上以显示按钮,并且将鼠标悬停在实际按钮上时不会触发

    我试图让按钮在悬停在图像上时出现 以下作品 jQuery show image mouseenter function jQuery the buttons animate opacity 1 1500 mouseout function
  • 如何从ArrayBuffer中获取二进制字符串?

    JavaScript中如何从ArrayBuffer中获取二进制字符串 我不想对字节进行编码 只需将二进制表示形式获取为字符串 提前致谢 以下代码将一致地转换ArrayBuffer to a String并再次返回 而不会丢失或添加任何额外的
  • 使用 javascript 调用 ViewComponent

    我有一个带有几个视图组件的网页 当我单击这些组件时 我会为其打开一个简单的编辑器 请参见下图 如果我编辑文本并按 Enter 键 我想重新渲染视图组件而不是孔页面 是否可以使用 javascript 调用视图组件来获得此行为 通过更新 您现
  • 最小的 ExtJS 包是什么?

    有谁知道 Ext JS 2 2 所需的最少文件吗 我知道 ExtJS 网站有一个功能 build http extjs com products extjs build ExtJS ext js 的小版本 作为 ext all js 的替代
  • 如何向尚未添加到页面的元素注册 Javascript 事件处理程序

    我正在尝试构建一个greasemonkey 脚本 它将根据用户与其他动态创建的数据表的交互动态创建数据表 我的问题是 每次创建表时 我都必须进行两次传递 一次用于创建表 另一次用于获取表中我想要添加事件处理程序的所有对象 通过 id 并添加
  • 带有嵌入式 Ruby 的 Javascript:如何安全地将 ruby​​ 值分配给 javascript 变量

    我在页面的 javascript 块中有这一行 res foo 处理这种情况的最佳方法是什么 ruby var里面有单引号吗 否则会破坏 JavaScript 代码 我想我会用红宝石JSON http json org ruby var 上
  • MongoDB 嵌套数组查询

    我问这个作为评论another https stackoverflow com questions 5250652 query a nested array in mongodb问题 还发了一个question https groups g
  • Relay 中的嵌套片段数据始终相同

    我是 Relay 新手 并且遇到了片段上嵌套数据的问题 当我在 graphiql 中进行测试时 以下查询返回正确的数据 因此我确信我的架构是正确的 viewer customers name billing address city 但是
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • 如何使用 selenium 获取 javascript 结果?

    我有以下代码 from selenium import selenium selenium selenium localhost 4444 chrome http some site com selenium start sel selen
  • 全局定义的 AngularJS 控制器和封装

    根据 AngularJS 的教程 控制器函数仅位于全局范围内 http docs angularjs org tutorial step 04 http docs angularjs org tutorial step 04 控制器函数本身
  • 在外部单击时关闭弹出 div

    我有一个弹出 div 仅在单击特定按钮时显示 单击同一按钮时它甚至会隐藏 我的问题是 我还想在单击外部任何地方时隐藏 div 我无法这样做 因为弹出 div 位于主包装类内部 并且无法通过在包装类上使用 click 事件并使其隐藏来做到这一
  • 单击react.js 切换列表的背景颜色

    我正在尝试创建一个具有以下功能的列表 悬停时更改列表项的背景颜色 单击时更改列表项的背景颜色 在单击的元素之间切换背景颜色 即列表中只有一个元素可以具有 clicked 属性 我已经执行了 onhover 1 和 2 功能 但无法实现第三个
  • Javascript - 如何计算数字的平方?

    使用 JavaScript 函数 function squareIt number return number number 当给定数字 4294967296 时 函数返回 18446744073709552000 每个人都知道真正的答案是
  • nvd3.js - 无法更改折线图中线条的颜色

    我正在尝试更改 nvd3 折线图不同线条的颜色here http nvd3 org livecode index html codemirrorNav但我无法理解该怎么做 我想将示例中的 2 条线的颜色更改为绿色和青色 我试过 nv add
  • 从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法

    POSIX 系统公开了一系列exec函数 允许人们将可能不同的东西加载到当前进程中 保留打开的文件描述符 进程标识符等 可以出于多种原因执行此操作 在我的情况下 这是引导 我想更改我自己的进程的命令行选项 然后在现有进程上重新加载它 这样就
  • 使用 stopPropagation() 处理 React 事件委托

    我有一个 React 项目 应该可以放置在任何网站上 我的想法是 我托管一个 javascript 文件 人们放置一个具有特定 ID 的 div 然后 React 在该 div 中进行渲染 到目前为止 除了点击事件之外 这是有效的 这些事件
  • 为什么 Mongohint 可以使查询运行速度提高 10 倍?

    如果我使用explain 从shell运行mongo查询 获取所使用的索引的名称 然后再次运行相同的查询 但使用hint 指定要使用的相同索引 解释计划中的 millis 字段是显着下降 例如 没有提供任何提示 gt gt db event

随机推荐

  • 如何使用razor自定义EditorFor CSS

    我有这门课 public class Contact public int Id get set public string ContaSurname get set public string ContaFirstname get set
  • Xcode 8 为 iOS 10 生成损坏的 NSManagedObject 子类

    我最近将我的 iOS 应用程序项目更新到了 iOS 10 现在我尝试更改应用程序的核心数据模型 但 Xcode 生成的新 NSManagedObject 子类已损坏 我还尝试修复子类手册 但这不起作用 核心数据模型的最低工具版本设置为 Xc
  • 使用 React 定期重新加载 iframe 的最佳方法是什么?

    我正在使用 React 构建一个网页 这意味着我无法直接操作 DOM 我尝试通过更新 url 状态来重新加载 iframe 但这似乎不会重新加载页面 这是我尝试过的状态代码 componentDidMount function setInt
  • 在主选项卡栏控制器之前显示登录视图控制器

    我正在创建一个带有需要登录的标签栏控制器的 iPad 应用程序 因此 在启动时 我想显示一个 LoginViewController 如果登录成功 则显示选项卡栏控制器 这就是我实现初始测试版本的方式 省略了一些典型的标头内容等 AppDe
  • Eclipse 编辑器中当前选定代码的 AST?

    我需要在 Eclipse 的 java 编辑器中获取当前选择的 AST 基本上我想将选定的java代码转换为其他形式 可能是其他语言或XML等 所以我想 我需要获得 AST 来进行选择 目前我能够以简单文本的形式进行选择 对于这样的问题有什
  • 使用OpenGL绘制图像

    如何使用开放的 OpenGL OpenTK 在地图 GMap Net 上绘制视频 图像 来自无人机的视频 我的问题是如何在地图上绘制视频图像 因为视频可以在地图上以不同角度观看 并且图像在地图上应该是梯形而不是四边形 I copied im
  • 使用 ref setAccessibilityFocus 不起作用

    我正在使用ref支柱连同findNodeHandle在一堆组件上以便能够触发AccessibilityInfo setAccessibilityFocus 然而 它并不总是按预期工作 有时参考是null虽然componentDidMount
  • 将所有列(表中)的所有零(如果有)更改为...例如 1

    我有一个包含 18 列 均为整数 和 1040 行的表 如果任何值为零 我想将其更改为 1 我正在使用 Postgresql 做这个的最好方式是什么 我无法想出一个简单的更新语句 而且我是数据库新手 关于我应该看什么来学习如何实现这样的事情
  • AspectJ - 使用类型间声明创建全局记录器字段

    我想创建一个类型间声明 在每个类中声明一个 静态最终 Logger 实例 构造函数应该传递给封闭类Klazz class value Aspect public class LoggerAspect public interface Log
  • 安装 Gulp 后:“找不到命令‘gulp’”

    安装后gulp js通过 npm 我收到了no command gulp found运行时出错gulp来自安装到的同一目录的命令 当查看下方时node modules bin 目录 我可以看到gulp在那里可执行 我的npm安装有问题吗 这
  • C# 中何时使用“using”块?如何在 C# 中使用“using”块?

    我在大多数样本中看到SqlCommand像这样使用 using SqlConnection con new SqlConnection CNN STRING using SqlCommand cmd new SqlCommand Selec
  • jQuery 对话框中的单击事件发生两次?

    我一直在处理一个奇怪的问题 click 每当放置在 jQuery 对话框中时 事件就会发生两次 我的简单测试用例如下活生生的例子在这里 div style display none a href Test Link a div
  • 使用 foreach 而不是 while 循环循环 mysql_fetch_assoc [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我有一个 mysql 查询 result mysql query my query 有没有办法让这样的事情发挥作用 results mysql fetch assoc result f
  • Emacs 23、OS X、multi-tty 和 emacsclient

    如何让 emacs 23 在 OS X 上的多 tty 模式下正常工作 我已经添加 server start 到我的 emacs 并发现运行 Applications Emacs app Contents MacOS bin emacscl
  • 什么“类型”是从选择标签中选择的选项

    我是 PHP 新手 正在尝试获取从 select 标签中选择的选项的值 我熟悉某些类型的输入 例如单选 文本 复选框等 我的问题是 类型 是从选择标签中选择的选项 前三种形式工作得很好 但第四种则不行 这是我的代码
  • Akka 路由:回复发送到路由器最终成为死信

    我正在使用 Actor 路由 但无法将回复发送回路由器 以便路由列表中的另一个 Actor 可以接收到此消息 我在用着 sender tell Message context parent 为了根据 akka 文档回复路由器 路由参与者将发
  • 带有 .htaccess 的 SEO 友好 URL

    有人可以帮我重写一些 URL 吗 我有 例如 这些页面 www mydomain com test gallery asp id 2 www mydomain com test gallery asp id 3 并希望他们被要求为 www
  • html onchange 事件不起作用

    我正在尝试做一些实验 我想要发生的是 每次用户在文本框中输入内容时 它都会显示在对话框中 我用的是onchangeevent 属性来使其发生 但它不起作用 我仍然需要按提交按钮才能使其正常工作 我读到了有关 AJAX 的内容 并且正在考虑了
  • 哪些 lua 功能可以用作 python 或 tcl Expect 中的 pexpect?

    我有一些 shell 脚本 它们将一些消息打印到 stdout 并且如果输出与某些正则表达式匹配 我想生成一些其他进程 我可能还想将 shell 挂起一段时间 直到其他进程给出一些反馈 我的要求基本上表现得像shell中的pipe和tcle
  • mongoDB 中的嵌套对象文本搜索

    我不确定如何解决这个问题 我想在 mongoDB 集合中搜索并仅返回适合搜索查询的嵌套对象 在所有字段上使用文本搜索 该集合中的所有文档都具有以下格式 arr id 1 name Random description Hello world