【发布时间】:2019-03-11 04:19:35
【问题描述】:
鉴于以下示例架构,有没有办法让“电子邮件”成为 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);
【问题讨论】:
-
一种选择是将电子邮件 ID 存储在 _id 字段中。
-
我找不到任何名为
primary index的概念,你的意思是primary key?在您正确选择它们之前,索引之间不会有性能 优势。
标签: mongodb mongoose mongoose-schema query-performance