【问题标题】:Nested Collection in MongoDBMongoDB中的嵌套集合
【发布时间】:2018-09-01 11:46:32
【问题描述】:
const onboarderSchema = new Schema({
  name: {
    type: String,
    required: [true, "name field is required"]
  },
  email: {
    type: String
  },
  project: {
    type: Object,
    projectName: {
      type: String,
      required: [true]
    },
    projectDescription: {
      type: String
    },
    manager: {
      type: String,
      required: [true]
    },
    mentor: {
      type: String,
      required: [true]
    },
    technologies: {
      type: [Number],
      required: [true]
    }
  }
});

这是我正在处理的项目的架构。作为对象的项目将动态添加不同的项目。那么我应该将项目类型更改为数组还是其他?无法弄清楚该怎么做。请提出建议。

【问题讨论】:

    标签: node.js mongodb reactjs express


    【解决方案1】:

    使其成为数组。记住对象是针对具有固定字段和值的单个信息。另一方面,数组用于保存许多信息,您可以在其中动态放置任意数量的对象。然后它将被称为对象数组。保持数组中的对象字段相同,以保持一致性和灵活的查询操作。

    【讨论】:

    • 我把它转换成一个对象数组。它似乎工作正常。但是当我必须更新数组中特定的任何字段时该怎么办?
    【解决方案2】:

    如果你想在你的数据库中有多个项目,项目字段应该是一个数组

    project:[{projectName:"p1"},
             {projectName:"p2"},
             {projectName:"p3"}]
    

    或者像这样

    project:["p1","p2","p3"]
    

    【讨论】:

    • 我把它转换成一个对象数组。它似乎工作正常。但是当我必须更新数组中特定的任何字段时该怎么办?
    • db.table.update({"project.projectName":"p2"},{$set:{"project.$.projectName":"p4"}})
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2016-12-14
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    相关资源
    最近更新 更多