MongoDB 中的多语言属性

2024-02-06

我正在尝试在 MongoDB 中设计一个模式范例,它将支持文档中变量属性的多语言值。

例如,我有一个产品目录,其中每个产品可能需要以各种语言存储其名称、标题或任何其他属性。 同样的范例可能也适用于其他特定于区域设置的属性,例如价格/货币变化

我一直在考虑采用键值方法,其中键是语言代码,值是相应的值:

 { 
      sku: "1011",
      name: { "en": "cheese", "de": "Käse", "es": "queso", etc... },
      price: { "usd": 30.95, "eur": 20, "aud": 40, etc... }
 } 

问题是我相信这会阻止我在多语言字段上使用索引。 最终,我想要一个通用但直观的可索引设计。

任何建议将不胜感激,谢谢。


针对架构设计的整体建议可能是这里讨论的主题有点宽泛。不过,我可以建议您考虑将您所展示的元素放入Array子文档,而不是每个项目都有字段的单个子文档。

{ 
    sku: "1011",
    name: [{ "en": "cheese" }, {"de": "Käse"}, {"es": "queso"}, etc... ],
    price: [{ "usd": 30.95 }, { "eur": 20 }, { "aud": 40 }, etc... ]
} 

这样做的主要原因是考虑到访问路径到您的元素,这应该使查询更容易。这是我详细经历过的here https://stackoverflow.com/a/21639060/2313887这可能值得您阅读。

也可以对此进行扩展,例如您的姓名字段:

    name: [
        { "lang": "en", "value": "cheese" },
        { "lang": "de", "value: "Käse"  },
        { "lang": "es", "value": "queso" },
        etc...
    ]

一切都取决于您的索引和访问要求。这实际上完全取决于您的应用程序的具体需求,而 MongoDB 的优点在于它允许您根据需要构建文档。

P.S至于您存储的任何东西Money值,我建议您阅读一些内容,然后从这里的这篇文章开始:

MongoDB - Decimal 类型的值怎么样? https://stackoverflow.com/questions/11541939/mongodb-what-about-decimal-type-of-value/11542549#11542549

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

MongoDB 中的多语言属性 的相关文章

  • 如何在 MongoDB 2.6 副本集上启用 HTTP 控制台

    我正在运行一个 3 服务器 MongoDB 副本集 我最近从 2 4 升级到 2 6 在 2 4 中 我能够访问所有三台服务器上的 HTTP 控制台 无论它们是主服务器还是辅助服务器 现在 2 6 需要不同的配置设置来启用控制台 Disab
  • 关于 mongodb java 驱动程序的困惑[重复]

    这个问题在这里已经有答案了 我是 MongoDB 的初学者 我正在使用 JAVA 驱动程序来使用它 我有以下代码 MongoClient client new MongoClient DB d client getDB world DBCo
  • 检查字段是否存在于数组的子文档中

    我有一个与此类似的架构 id Number line items id String quantity Number review request sent Boolean total price String name String or
  • MongoDB BSON 文档中的键顺序重要吗?

    我知道某些推荐需要对 hashmap 字典进行排序 但是 MongoDB 中的实际 BSON 文档重要吗 索引是否仍然有效 E g db people ensureIndex LName 1 FName 1 它对两者都有效吗 LName a
  • 重命名($project)数组中的字段 - MongoDB [重复]

    这个问题在这里已经有答案了 我有一个类似以下的文件 id 59ba903dacea50d0d7d47168 sections id 59d9dd7947ce651544c5d4c1 sectionName Section 1 id 59d9
  • 我可以按日期查询 MongoDB ObjectId 吗?

    我知道 ObjectId 包含它们的创建日期 有没有办法查询ObjectId的这方面 将时间戳弹出到 ObjectId 中 http www kchodorow com blog 2011 12 20 querying for timest
  • MongoDB 查询返回空数组

    有一个基本的 Express 应用程序连接到几乎 0 5 GB 的 MongoDB 数据库 当我运行时 router get function req res next medical data find State CT function
  • 将字符串数组转换为对象 Id 数组

    我有一个字符串数组 let stringObjectIdArray fssdlfsd343 43434234242 342424242 我想使用 mongoose 类型将字符串数组更改为对象 Id 数组 但它不起作用 它仅适用于字符串而不是
  • mocha——手表和猫鼬模型

    如果我让 mocha 监视更改 每次保存文件时 mongoose 都会抛出以下错误 OverwriteModelError 无法覆盖Client模型一旦编译 我知道猫鼬不允许两次定义模型 但我不知道如何让它与mocha watch clie
  • 如何中止 MongoDB shell 中正在运行的查询?

    我不敢相信我必须问这个问题 但是如何停止我刚刚运行的查询 该查询现在正在运行 并且显然需要很长时间才能在 Mongo shell 中完成 Control C似乎会使外壳崩溃 并吐出大量错误 中建议的愚蠢解决方案这个帖子 https stac
  • Mongoose 限制/偏移量和计数查询

    查询性能有点奇怪 我需要运行一个查询来计算文档总数 并且还可以返回一个可以限制和偏移的结果集 所以 我总共有 57 个文档 用户想要 10 个文档偏移 20 我可以想到两种方法来做到这一点 首先是查询所有 57 个文档 以数组形式返回 然后
  • 在 Windows 7 - 64 位上安装 Mongodb

    我是 mongodb 的新手 不知道如何安装它 因为我找不到视频或任何有用的资源来实现相同的目的 请帮助我在 Windows 7 上安装 mongodb 并提供确切的步骤 我尝试从该网站下载最新版本的 mongodb 但不成功 提前致谢 R
  • 我可以要求在 mongodb 集合中设置属性吗? (不为空)

    我可以在 mongodb 中定义一个需要设置某些属性的模式吗 很像NOT NULL在 SQL 中 如果可以的话 这个的语法是什么 我正在使用 Node js 和猫鼬 猫鼬 v3 6 15 MongoDB v2 4 5 EditCharles
  • 我如何在 mongodb 的数组中找到文本搜索

    id objectId 23651478 name Tomatos array title Vegetables description Vegitables are good to health id objectId 45761244
  • 如何使用 Sails.js 和 Waterline 更新 MongoDB 子文档中的特定键?

    当尝试使用 Sails js 和 Waterline ORM 更新 MongoDB 子文档中的单个键时 我遇到了问题 这就是我的person js模型看起来像 module exports attributes name type stri
  • 如何在 Mongoose 中执行查找查询?

    我在 mongodb 中有一组电子书数据 例如 id ObjectId 58b56fe19585b10cd42981d8 cover path D Ebooks uploads ebooks cover 1488285665748 img1
  • mongorestore 从独立到复制集

    我已转储在默认端口上运行的独立 mongo 数据库 14Gb 大 如下所示 mongodump username
  • Mongodb聚合数组大小大于匹配项[重复]

    这个问题在这里已经有答案了 我有一个集合 其中投资是 mongodb 文档内的一个数组 现在使用聚合 我尝试过滤投资长度超过 5 倍的结果 然后使用匹配查询进行下一步处理 Collection id 000000 investments h
  • MongoDB - 打开和关闭连接 - 建议良好实践

    我通过 Node js 的驱动程序使用 MongoDB 我通常打开一个连接 通过connect 方法 任何时候我需要执行操作并关闭它 通过close 方法 一旦我完成 在我的程序中 我自然需要对 MongoDB 执行许多操作 因此我会多次打
  • Laravel Schema Builder 改变存储引擎

    我正在尝试更改表并将其存储引擎更改为InnoDb 当我跑步时php artisan migrate它完成且没有错误 然而 当我检查 Sequel Pro 中的存储引擎时 没有任何变化 public function up Schema ta

随机推荐

  • 使用 Laravel 5.4 进行自定义登录密码检查

    如果用户尝试登录我的 Laravel 应用程序 并且密码与数据库中的 password 列不匹配 我也想根据另一个密码列 old system password 检查它 我正在使用默认的 Laravel 身份验证系统 据我所知 我应该能够创
  • 如何将 2d 网格点 (x,y) 作为 3d 点 (x,y,z) 映射到球体上

    我有一组 2d 网格点 x y 我想将其作为 3d 点 x y z 映射 投影到球体上 我意识到随着abs y 的增加 会有一些向两极的扭曲 但我的网格补丁只会覆盖赤道附近的球体的一部分 因此可以避免严重的扭曲 我很难找到正确的方程式 摘自
  • 多态引擎,用托管语言?

    我的编程技能已经发展到可以很好 轻松地完成大多数日常工作的程度 我想有一天 制作一个多态引擎将真正考验我的技能 我想知道是否有人对制作一个多态引擎有任何指导 程序的多态引擎 从哪里开始 也许一些代码示例 在这一点上真的任何事情都会有帮助 这
  • 如何将一段文本解析成句子? (最好是红宝石)

    考虑到 Mr and Dr 和 U S A 等案例 您如何将段落或大量文本分解为句子 最好使用 Ruby 假设你只是将句子放入数组的数组中 更新 我想到的一种可能的解决方案是使用词性标注器 POST 和分类器来确定句子的结尾 从琼斯那里获取
  • 在 shell 中将 .txt 转换为 .csv

    我有一个文本文件 ifile txt 1 4 22 0 3 3 2 3 2 2 34 1 5 4 2 3 3 2 33 0 34 0 2 3 4 12 3 0 43 0 4 4 我想将其转换为 csv 文件 ofile txt ID No
  • 如何使用新的 Azure 存储 SDK v12 打开新 Blob 的可写流?

    我正在使用 Azure Storage SDK v12 并且正在寻找一种方法来打开特定 Blob 的流 就像以前的版本一样 CloudBlobClient cloudBlobClient account CreateCloudBlobCli
  • 更改 URL 而不重新加载页面

    我想知道是否可以在不重新加载页面的情况下更改浏览器中 URL 的内容 我使用 jQuery 和 Ajax 加载页面的新部分 当我选择 产品一 时 直接链接是mysite com product1对于 产品二 来说是mysite com pr
  • Azure 应用服务无法验证 .pfx 文件:证书验证失败,因为无法加载

    多年来 我能够使用 OpenSSL 创建方法在 Azure 应用服务上上传新的 pfx 文件以进行 SSL 绑定这个堆栈溢出答案 https stackoverflow com a 17284371 1399567 openssl pkcs
  • Windows Phone 8 中的设备方向

    我想在使用 PhotoCaptureDevice 选项拍摄快照时根据 Windows Phone 8 中的设备方向旋转图像 当设备方向为 LandscapeLeft Image to be rotated to 90 LandscapeRi
  • 有人能解释一下吗:0.2 + 0.1 = 0.30000000000000004? [复制]

    这个问题在这里已经有答案了 重复项 浮点数是如何存储的 什么时候重要 https stackoverflow com questions 56947 how is floating point stored when does it mat
  • 如何对 numpy 字符串数组的每个元素进行切片?

    Numpy 有一些非常有用的字符串操作 http docs scipy org doc numpy reference routines char html 它将常用的 Python 字符串操作向量化 与这些操作相比pandas str n
  • 来自带有列表的字典的 Pandas DataFrame

    我有一个 API 它以 Python 字典的形式返回一行数据 大多数键都有一个值 但有些键的值是列表 甚至是列表的列表或字典的列表 当我将字典放入 pd DataFrame 并尝试将其转换为 pandas DataFrame 时 它 会抛出
  • 使用 FPDF 使文本在单元格中换行?

    现在 当我使用带有文本的单元格时 它全部保留在一行上 我知道我可以使用写入功能 但我希望能够指定高度和宽度 这就是我现在所拥有的 但正如我所说 文本不会换行以保留在尺寸中 pdf gt Cell 200 40 reportSubtitle
  • 为什么我们在 Hibernate 中使用 @Embeddable

    有什么用 Embedded and Embeddable处于休眠状态 因为我在互联网上找到的每个示例都是在单个表中插入数据并使用两个不同的类来执行此操作 我的观点是 如果我使用单个表 那么我可以映射单个类内的所有列 那么为什么我应该使用不同
  • 关闭mysql连接重要吗?

    关闭mysql连接效率是否至关重要 或者在php文件运行后它会自动关闭吗 来自文档 http us php net function mysql connect 注意 脚本执行结束后 到服务器的链接将立即关闭 除非通过显式调用 mysql
  • Xcode 4.4 约束错误

    我正在使用 Xcode 4 4 并在界面生成器中创建视图 当我运行我的应用程序时 我始终收到以下约束错误 Unable to simultaneously satisfy constraints
  • Realm React-Native:从 JS(反应本机代码)和 android(java)访问相同的领域

    我有一个用例 我在 android 代码 本机 中接收一些数据 我想将此数据插入到由我的反应代码打开或创建的同一领域中 或者在同一个领域写作 我怎样才能实现这个目标 感谢所有的帮助 附 我知道我可以以某种方式制作一个本机模块并将数据发送回我
  • 如何使用 JMH 按顺序运行基准测试中的方法?

    在我的场景中 基准测试中的方法应该在一个线程中顺序运行并按顺序修改状态 例如 有一个List
  • 在 API 网关路径中引用授权者定义

    我在我的 cloudformation 模板中定义了一个自定义授权者 MyCustomAuthorizer Type AWS ApiGateway Authorizer Properties Name MyCustomAuthorizer
  • MongoDB 中的多语言属性

    我正在尝试在 MongoDB 中设计一个模式范例 它将支持文档中变量属性的多语言值 例如 我有一个产品目录 其中每个产品可能需要以各种语言存储其名称 标题或任何其他属性 同样的范例可能也适用于其他特定于区域设置的属性 例如价格 货币变化 我