使用mongodb设计db文档时的困惑

时间:2016-09-05 04:05:30

标签: javascript node.js mongodb

我用来像这样设计'table'

teacher
- id
- name

student
- id
- teacher_id
- name

假设1名教师可以有很多学生,所以我把teacher_id放到了能够加入的地方。

但是在noSql中我为什么要做多个文件?我可以将所有内容放在user下并使用嵌套对象,如

   user = {[
    id:1,
    type:teacher
    student:[{
    id:321
    }]
]}

想象一下,我的应用程序需要在不同的选项卡中检索教师和学生的列表,仍然使用模型我可以获得我需要的数据,我只是在客户端进行过滤/操作,对吗?

2 个答案:

答案 0 :(得分:2)

如果您使用nodejs,那么我更喜欢您在您的节点上使用moongose npm。它使用架构和模型限制。您的方法在RDBMS中很好但在mongo中你避免加入。

以这种方式设计一个模式,根据您的要求和数据可用性和read or write操作的使用情况进行匹配

var mongoose = require(' mongoose'); var Schema = mongoose.Schema;

var Teachers = new Schema({
        //_id: ObjectId,
        "name": {
            "type": String,
        },
         "students": [{
            name: String
            }]
        })

module.exports = mongoose.model('Teachers', Teachers);

它避免了你的加入。管理所有老师和他们各自的学生。

答案 1 :(得分:1)

您可以在服务器端进行过滤,并将过滤后的数据发送到客户端。效率更高。