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

时间:2019-03-11 04:19:36

标签: mongodb mongoose mongoose-schema query-performance

给出以下示例架构,是否有办法使“电子邮件”成为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 :(得分: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 } )