首页 > 解决方案 > 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

谢谢,

标签: node.jsmongodbmongoose

解决方案


让我们将您的技术(如 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 }
    })

推荐阅读