带有嵌入式文档的 MongoDB 数据库设计

标签 mongodb node.js

我有几千个字符串(items)想要翻译。我的 MongoDB 结构如下:

@document = {:item => "hello", :translations => {:fr => {:name => "bonjour", 
:note => "easy"}, :es => {:name => "hola", :note => "facil"}}}

:translations 字段可以包含更多语言和属性。我想运行查询,例如检索没有特定语言翻译的所有项目,或检索法语翻译为“bonjour”的所有项目。

我不知道该怎么做。有没有更好的方法来构建我的数据库以实现这些目的?我正在使用node.js。

谢谢。

最佳答案

I would like to run queries such as retrieving all items with no translations for a specific language,

.find({ 'translations.fr': {$exists:false} })

...or retrieving all items having 'bonjour' as a French translation.

.find({ 'translations.fr.name': "bonjour" })

Is there a better way to structure my database for these purposes?

我相信你的结构是正确的。您必须熟悉 Dot Notation .

关于带有嵌入式文档的 MongoDB 数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319600/

相关文章:

mongodb - Mongo DB 中的多面过滤器,用于具有多个选项的产品

mongodb - 在 shell 中重新分配 MongoDB _id

node.js - 在 mongodb forEach 循环查询后在 SailsJS 中渲染 View

session - 与 expressjs 和 redis 一起使用 session 时出错

javascript - NodeJS : Required library uses ecma6 modules

javascript - 使用 Socket.io 的异步模块加载 (AMD)

node.js - Mongodb 身份验证应用程序 - db.auth()

node.js - 如何使用 Node.js 在 MongoDB 中使用 cursor.forEach()?

java - 如何让 MongoDB 将 "ł"视为同义词 "l"?

javascript - 使用 sails.sockets.join 和 sails.sockets.broadcast 到客户端的 Sails.js 不会将信息返回给客户端