Mongoose:schema.index 多行

Posted

技术标签:

【中文标题】Mongoose:schema.index 多行【英文标题】:Mongoose: schema.index on several lines 【发布时间】:2017-11-16 22:55:01 【问题描述】:

我正在研究一个使用 mongoose 填充 MongoDB 的示例。

var eventSchema = new mongoose.Schema(
    _id:  type: String ,
    name:  type: String, required: true,
    description: type: String,
    venue: type: String,   );   
eventSchema.plugin(require('./plugins/pagedFind'));
eventSchema.index( name: 1 );
eventSchema.index( date: 1 );
eventSchema.index( venue: 1 );

我不知道 schema.index 是什么;所以我查了一下; http://mongoosejs.com/docs/guide.html;我了解到,除了默认的 _id 排序之外,它还是一种对集合进行排序的方法。

但是我写的和下面的有什么区别吗?

eventSchema.index( name: 1, date: 1,venue: 1  );

【问题讨论】:

Creating Multifield Indexes in Mongoose / MongoDB的可能重复 我已经知道了,我想知道这两种方式的区别 【参考方案1】:

差异为 2,如 2 个索引。

这会创建 3 个独立的索引:

eventSchema.index( name: 1 );
eventSchema.index( date: 1 );
eventSchema.index( venue: 1 );

这会创建 1 个compound index:

eventSchema.index( name: 1, date: 1, venue: 1  );

对于早期版本的 MongoDB,复合索引是为匹配多个字段的查询创建索引的唯一方法。

但是,从 2.6 版开始,MongoDB 可以为单个查询组合多个单字段索引,这减少了使用复合索引的需要(这需要仔细规划将执行哪些查询和排序)。

更多信息:

Compound Indexes Use Indexes to Sort Query Results Index Intersection

【讨论】:

以上是关于Mongoose:schema.index 多行的主要内容,如果未能解决你的问题,请参考以下文章

mysql 统计索引执行情况

MySQL查看哪些索引未使用

如何处理 Mongoose 中的 ENUM 值?

如何使用 graphql 和 mongoose 进行突变

Mongoose介绍和入门

MongoDB/Mongoose - 与 geoNear 和子文档的聚合