最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

MongoDB:填充或查询两个集合

运维笔记admin11浏览0评论

MongoDB:填充或查询两个集合

MongoDB:填充或查询两个集合

我有以下架构:

let ProjectSchema = new mongoose.Schema({
  title: {
    type: String
  },
  employees: {
    user: String, // ==> ObjectId of User from UserSchema
    role: String,
    workload: Number,
  },
  description: {
    type: String
  }
});

let UserSchema = new mongoose.Schema({
  email: {
    type: String,
    required: true,
    trim: true
  },
  name: {
    type: String
  },
  projects: {
    type: Array // ==> ObjectId of Project from ProjectSchema
  }
});

我想要实现的是通过_idemail获取用户并获取他的项目中的所有数据,例如:

{
    "user": {
        "_id": "asdf1234",
        "email": "[email protected]",
        "name": "Max"
        "projects": {
            "title": "Project 1",
            "description": "Just a text",
            "employees": {
                "user": "asdf1234",
                "role": "developer",
                "workload": 40
            }
        }
    }
}

我还希望通过Id获取特定项目,并且employee.user字段应填充正确的用户数据。

我可以用Mongoose populate做到这一点吗?我的方法是首先做一个User.findOne(),然后检查project.id和Project.findOne()

回答如下:

您在UserSchema中如何引用项目数组,当您查询要查询与用户关联的所有项目的用户时。

let mongoose = require("mongoose");
let Projects = require("./projects");
let UserSchema = new mongoose.Schema({
  email: {
    type: String,
    required: true,
    trim: true
  },
  name: {
    type: String
  },
  projects: {
    type: [Projects.schema]
  }
});

然后,每次查询用户时,它都会附带与用户关联的项目。

发布评论

评论列表(0)

  1. 暂无评论