Mongoose - 如何将_id替换为主索引?

问题描述 投票:1回答:1

鉴于下面的示例模式,是否有办法使“email”成为UserSchema上的主索引而不是默认的“_id”(假设电子邮件始终是唯一的)?如果可能的话,当它是主要索引时,性能是否会更好地搜索“电子邮件”?

另外,作为替代方案,是否可以在composit或复合字段上执行主索引。如果是这样,“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);
mongodb mongoose mongoose-schema query-performance
1个回答
0
投票

毕竟猫鼬文档可能会有所帮助。我不确定1识别出什么。例如:{_ id:1 ...,{groupNumber:1 ... lastname: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 } )
© www.soinside.com 2019 - 2024. All rights reserved.