MongoDB 设计 - 标签

2023-12-31

我是 MongoDB 新手。我有一个关于 MongoDB 性能的设计问题。假设我的电影类有两个属性:名称和导演。我还想标记这个电影类。是向此类添加一个新的 strings[] 属性,还是创建一个新类 MovieTags 更好?我知道我会经常查询这个标签,因为我会在 UI 上使用自动完成功能。对于这个自动完成功能,我只需要标签,而不是 Movie 对象。 什么选择更好?添加 strings[] 属性或对 MovieTags 集合的引用?考虑性能......当然,在这两种情况下都会完成索引。

我应该使用 MapReduce 吗?如果我使用嵌入 string[] 对象,则仅选择标签以用于自动完成功能?如何?

谢谢!


我可能会使用这样的模式,它将标签存储在字符串数组字段中:

db.movies.insert({
    name: "The Godfather",
    director: "Francis Ford Coppola",
    tags: [ "mafia", "wedding", "violence" ]
})

db.movies.insert({
    name: "Pulp Fiction",
    director: "Quentin Tarantino",
    tags: [ "briefcase", "violence", "gangster" ]
})

db.movies.insert({
    name: "Inception",
    director: "Christopher Nolan",
    tags: [ "dream", "thief", "subconscious" ]
})

对于这种类型的查询,您不需要 Map-Reduce。通过将标签嵌入到电影文档中,您可以利用 MongoDB 的multikey http://www.mongodb.org/display/DOCS/Multikeys功能,并使用单个查找具有给定标签的电影find() http://www.mongodb.org/display/DOCS/Querying像这样查询:

db.movies.find( { tags: "dream" } )

正如您所说,还值得向多键数组添加索引以提高查询性能:

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

MongoDB 设计 - 标签 的相关文章

随机推荐

  • Elasticsearch - 模糊、短语、完成建议和破折号

    因此 我一直在问单独的问题 试图实现我想要实现的搜索功能 但仍然达不到要求 所以我想我只会问人们他们对最佳 Elasticsearch 设置 映射 索引和查询结构的建议 以完成我正在寻找的工作为了 当您键入查询类别的解决方案时 我需要进行搜
  • 是否可以编译unittest而不运行它们并为特定模块显式运行unittest?

    我经常在开发 API 时在主函数中编写测试代码 但因为 D 集成了单元测试 所以我想开始使用它们 我当前的工作流程如下 我有一个脚本可以监视任何 d 文件中的文件更改 如果脚本找到修改过的文件 它将运行dub build 问题是dub bu
  • 在 tabcontrol C# 中显示多个数据表

    我有一个小程序 需要一个数据表 从sql数据库获取数据 然后按字段将其拆分为数据表数组 然后应将其显示在选项卡控件中 每个字段都在其自己的选项卡中 分割 采用单个数据表并分割成数据表数组 我认为工作正常 public DataTable s
  • 如何模拟 REST API [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 MVC 应用程序需要调用第三方供应商的 REST API REST API 应该返回 JSO
  • 是否有重新启动集群的最佳实践

    我遵循亚历克斯埃利斯的优秀tutorial https gist github com alexellis fdbc90de7691a1b9edb545c17da2d975使用kubeadm在 Raspberry Pi 上启动 K8s 集群
  • Gitignore 不忽略文件夹

    我已将多个文件夹添加到我的 gitignore文件 但当我这样做时它们仍然出现git status 我的安装 计算机是新的 我正在尝试在 svn 中初始化 git 存储库 正如我之前所做的数百次一样 尽管不是在这台机器上 文件夹被标记为忽
  • 如何在 ActiveMQ 5.2 中打开 JMX

    在 ActiveMQ 5 2 中启用 JMX 的正确方法是什么 我见过相互冲突的文档 所以我想知道是否有人知道正确的配置文件更改应该是什么 我想我可以通过更改用于启动 ActiveMQ 的批处理文件来使其工作 但我真的不知道
  • Android应用程序中的语音检测

    描述 我的应用程序记录手机麦克风的声音 我正在使用 android 标准类 android media AudioRecord 要做到这一点 应用程序有 2 个按钮 Start and Stop 当我按下start按钮应用程序开始记录 当我
  • 根据色调名称更改条形颜色

    我在用着seaborn and pandas从不同 但相关 的数据创建一些条形图 这两个数据集共享一个共同的类别 用作hue 因此我想确保在两个图表中该类别的条形颜色匹配 我该怎么办 一个基本的例子如下 import seaborn as
  • Oracle SQL:导出到 CSV 避免换行

    我需要批量导出每天 csv 文件中数据库的一些数据 实际上 我正在使用 SET COLSEP 命令 但在导出大小为 4000 VARCHAR2 4000 的大列时遇到一些问题 它在输出文件上返回给我许多空行和换行符 我将尝试用一个例子更好地
  • Visual Studio SSIS 项目 - 脚本任务生成错误

    我想学习在我的个人计算机上开发 SSIS 包 我对编写 C 脚本感兴趣 我使用 SSDT 在 Windows 10 Pro 64 位上安装了 Visual Studio 2019 还安装了 Integration Services Proj
  • PhpMyAdmin:“处理请求时出错:”(未显示错误)

    我在 Windows 10 64 位 上运行 XAMPP 作为开发环境 PhpMyAdmin 最近开始回复每一次尝试的操作 并出现以下错误 没有任何有关该错误的实际信息 我怎样才能继续前进而不收到错误 不起作用的行动 删除行 删除表 Edi
  • 在 Javascript 中启用和禁用 Div 及其元素[重复]

    这个问题在这里已经有答案了 我正在寻找一种方法启用和禁用这div id dcalc 和它的孩子 div class nerkheArz style width 380px height 370px background CDF text a
  • Bash 参数替换中 :- 和 := 有什么区别?

    Bash 参数替换中 和 有什么区别 他们似乎都设置了默认值 Quoting Bash 参考手册 https www gnu org software bash manual bashref html Shell Parameter Exp
  • 如何诊断 Java 8 元空间泄漏?

    我有一个具有一些有趣行为的 J2EE 应用程序 堆似乎表现良好 随着时间的推移 随着垃圾收集的进行而增长和收缩 总体上没有明显的长期堆扩展 然而 元空间一直以每小时 20 Mb 左右的速度稳定增长 直到达到 MaxMetaspace 并遇到
  • 如何将具有 0 值字节的 char * 转换为 python 字符串?

    使用 ctypes 模块 我可以轻松地将 POINTER c char 或 c char p 类型导入到 python 中 但这两种方法都没有提供一种方法来最终得到包含零值字节的 python 字符串 c char p 以零终止 这意味着
  • Marshmallow 序列化与父字段嵌套

    抱歉 如果之前有人问过这个问题 我实际上找不到解决方案或类似的问题 可能使用了错误的词语 我正在更新现有的 Flask API 该 API 使用 marshmallow 和 peewee 从我们无法控制的客户端接收数据 无法更改 JSON
  • '类型NSNull无法转换为NSString' aria-label='反应本机AsyncStorage firebase JSON值''类型NSNull无法转换为NSString'> 反应本机AsyncStorage firebase JSON值''类型NSNull无法转换为NSString

    我在用AsyncStorage存储一些 Firebase 用户数据 AsyncStorage setItem firebaseUser JSON stringify data 当我尝试检索数据时 React Native 因以下错误而崩溃
  • 如何让gradle在项目根目录为maven用户生成有效的pom.xml文件?

    虽然现在只有两天 但我绝对愿意在我的所有 Java 项目中使用 gradle 并从我所有项目的根目录中删除 pom xml 但是 我希望保持与 maven 兼容 因为我希望 gradle 任务能够在用户需要的情况下在项目的根目录生成合适的
  • MongoDB 设计 - 标签

    我是 MongoDB 新手 我有一个关于 MongoDB 性能的设计问题 假设我的电影类有两个属性 名称和导演 我还想标记这个电影类 是向此类添加一个新的 strings 属性 还是创建一个新类 MovieTags 更好 我知道我会经常查询