Как связать две коллекции в MongoDB - PullRequest
0 голосов
/ 25 февраля 2019

Я создал две коллекции поставщик и работник и коллекция поставщика содержит ссылки на сотрудника " emplyoee_id: [String] " СледуетЯ тоже наоборот?это хорошая идея?добавить ссылку в обе коллекции?

Что делать, если я хочу, чтобы все сотрудники с названием их компании вместе с ним?Я в замешательстве.

сотрудник

const employeeSchema = Schema({
  _id: Schema.Types.ObjectId,
  name: String,
  address: String,
  email: String,
  designation: String,
  contact_number: Number,
  contract_start: Date,
  contract_end: Date
});

Продавец

const vendorSchema = Schema({
    _id: Schema.Types.ObjectId,
    name: String,
    address: String,
    email: [String],
    contact_number: [Number],
    contract_start: Date,
    contract_end: Date,
    emplyoee_id:[String]
});

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Для loopback Framework

Я сделал это с помощью Loopback Framework.Например, «Сбор пользователей» и «Сбор проектов». Для каждого пользователя может быть несколько проектов, и у каждого проекта есть один и только один пользователь.

В модели проекта

"relations": {
   "user": {
   "type": "belongsTo",
   "model": "user",
   "foreignKey": "id"
}}

В модели пользователя

"relations": {
  "projects": {
  "type": "hasMany",
  "model": "project",
  "foreignKey": "project_user_id"
}}
0 голосов
/ 25 февраля 2019

В модели мангусты вы можете определить свойства со ссылкой на другую модель.Check mongoose popolate

Пример:


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

const personSchema = Schema({
  _id: Schema.Types.ObjectId,
  name: String,
  age: Number,
  stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

const storySchema = Schema({
  author: { type: Schema.Types.ObjectId, ref: 'Person' },
  title: String,
  fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});

const Story = mongoose.model('Story', storySchema);
const Person = mongoose.model('Person', personSchema);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...