mongodb / mongoose 中的部分索引
Posted
技术标签:
【中文标题】mongodb / mongoose 中的部分索引【英文标题】:Partial indexes in mongodb / mongoose 【发布时间】:2016-05-04 01:37:44 【问题描述】:在稀疏索引文档中我发现了关于 mongodb 3.2 部分索引的注释
3.2 版更改:从 MongoDB 3.2 开始,MongoDB 提供 创建部分索引的选项。部分索引提供了一个超集 稀疏索引的功能。如果您使用的是 MongoDB 3.2 或 以后,部分索引应该优先于稀疏索引。
Partial 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);
【讨论】:
@Alendorff 没有。我认为它没有的原因是因为 Mongoose 将命令分派给数据库引擎,所以 Mongoose 与它无关。但恕我直言,它应该。一些研究将引导您发现在 Mongoose 中使用此功能的问题:github.com/Automattic/mongoose/… 确认这是可能的。【参考方案3】:对于 Mongoid 用户:
index(
user_id: 1, author_id: 1, complete: 1 ,
background: true,
partial_filter_expression:
complete: :$eq => true
)
找不到任何文档,但 this PR。
【讨论】:
以上是关于mongodb / mongoose 中的部分索引的主要内容,如果未能解决你的问题,请参考以下文章
E11000 mongodb mongoose 中的重复键错误索引
E11000 mongodb mongoose 中的重复键错误索引
E11000 mongodb mongoose 中的重复键错误索引