node.js - MongoDb 模式优化与分层数组
问题描述
您好,我想请您就如何构建 mongoDb 模式提出建议。假设我有一个分层作业列表:
WebDevelopment :
- php
- html
....
MobileDevelopment :
- Kotlin
- Java
....
... (and so on)
假设用户可以选择几种技术:php、kotlin ...,下面是我想象的一个简单的 Schema:
// USER SCHEMA
const UserSchema:Schema = new Schema({
jobs:[{
type:String,
ref: "job",
}]
})
// JOB SCHEMA
const JobSchema:Schema = new Schema({
jobs:{ type: String }
})
但是我该如何组织工作的父母/孩子呢?在查询 mongoDb 时,我想找到所有使用 php 和/或 kotlin 以及结构化数据子/父的用户。这可能吗 ?
如果我解释得不好,请告诉我。
PS:我使用 nodejs 和 mongoose 作为 ODM
谢谢,
解决方案
让我们将您的技术(如 php、html、java)称为标签。然后你的标签有一个类型,即 Web 开发和移动开发。
现在,事情很简单。
// USER SCHEMA
const UserSchema:Schema = new Schema({
jobs:[{
type: Schema.Types.ObjectId,
ref: "Job",
}]
})
// JOB SCHEMA
const JobSchema:Schema = new Schema({
tags:[{ type: Schema.Types.ObjectId, ref: "Tag" }]
})
// TAG SCHEMA
const TagSchema:Schema = new Schema({
name:{ type: String },
ofType: {type: String }
})
推荐阅读
- kubernetes - 有条件地在图表中包含 helmfile
- shell - 如何在循环中替换文件中的字符串并运行命令
- css - 如何在 scss 中实现可切换主题?
- python - 使用单例方法的 Python 类
- mysql - 调用从 MS SQL Server 获取 longblob/varbinary(max) 参数的 MySQL 存储过程
- typescript - 如何告诉 typescript getAssociation 函数存在于 Sequelize 模型中?
- node.js - SheetJS如何从json创建工作表并将其保存为缓冲区
- mqtt - 使用 MQTT 启用规则链警报在 thingsboard 中不起作用
- laravel - cURL 错误 60:SSL 证书问题:证书链中的自签名证书
- javascript - 为什么在我的代码示例中没有调用 SIGTERM 事件处理程序?