鉴于下面的示例模式,是否有办法使“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);
毕竟猫鼬文档可能会有所帮助。我不确定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 } )