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