Мангуст - как заменить _id в качестве основного индекса? - PullRequest
1 голос
/ 11 марта 2019

Учитывая приведенную ниже примерную схему, есть ли способ сделать «электронную почту» основным индексом в UserSchema вместо «_id» по умолчанию (при условии, что электронная почта всегда уникальна)? Если возможно, будет ли лучше поиск по «электронной почте», если это основной индекс?

Также, в качестве альтернативы, возможно ли сделать первичный индекс для композитного или составного поля. Если это так, как будет выглядеть синтаксис первичного ключа для "firstName.firstName"? В этом случае как StorySchema ссылается на UserSchema. Будет ли синтаксис выглядеть одинаково или иначе?

var mongoose = require("mongoose");

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

const StorySchema = new Schema({
  title: {
    type: String,
    required: true
  },
  body: {
    type: String,
    required: true
  },
  user: {
    type: Schema.Types.ObjectId,
    ref: 'users'
  },
  date: {
    type: Date,
    default: Date.now
  }
});
mongoose.model('stories', StorySchema);

const UserSchema = new Schema({
  _id: false,
  email: {
    type: String,
    required: true
  },
  firstName: {
    type: String
  },
  lastName: {
    type: String
  },
});
mongoose.model('users', UserSchema);

1 Ответ

0 голосов
/ 11 марта 2019

Документация мангуста может быть полезна в конце концов. Я не уверен, что идентифицирует 1. Например: {_id: 1 ..., {groupNumber: 1 ... фамилия: 1 ....

https://docs.mongodb.com/master/core/index-unique/

Выглядит как пример определения первичного ключа с использованием одного или нескольких полей:

{ _id: 1, a: [ { loc: "A", qty: 5 }, { qty: 10 } ] }

Пример определения составного вторичного индекса.

db.members.createIndex( { groupNumber: 1, lastname: 1, firstname: 1 }, { unique: true } )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...