【问题标题】:Partial indexes in mongodb / mongoosemongodb / mongoose 中的部分索引
【发布时间】:2016-05-04 01:37:44
【问题描述】:
在稀疏索引文档中我发现了关于 mongodb 3.2 部分索引的注释
3.2 版更改:从 MongoDB 3.2 开始,MongoDB 提供
创建部分索引的选项。部分索引提供了一个超集
稀疏索引的功能。如果您使用的是 MongoDB 3.2 或
以后,部分索引应该优先于稀疏索引。
Partial indexes 非常有帮助,我想在我的项目中使用它们。是否可以将它们与猫鼬一起使用?
【问题讨论】:
标签:
node.js
mongodb
indexing
mongoose
mongodb-indexes
【解决方案1】:
在当前的 Mongoose 4.3.7 版本中,您无法在方案中定义部分索引,但您仍然可以使用 MongoDB 3.2 的部分索引。
您只需使用本机驱动程序创建索引。
// ScheduleModel is a Mongoose Model
ScheduleModel.collection.createIndex({"type" : 1 } , {background:true , partialFilterExpression : { type :"g" }} , function(err , result){
console.log(err , result);
});
之后,每个与partialFilterExpression 匹配的查询都会被编入索引。
【解决方案2】:
现在可以通过 Mongoose +4.6.1 原生实现
Book.index({user: 1, author: 1, complete: 1}, {unique: true, partialFilterExpression: {complete: true}});
【解决方案3】:
对于 Mongoid 用户:
index(
{ user_id: 1, author_id: 1, complete: 1 },
background: true,
partial_filter_expression:
{
complete: { :$eq => true }
}
)
找不到任何文档,但 this PR。