我想为集合创建部分索引,但索引应该按条件应用于文档。例如,我想仅在文档具有特定字段值时检查文档的唯一性。换句话说,我正在寻找索引创建的一些构造:
db.person.createIndex( { age: 1}, { partialFilterExpression: { age: { $gte: 18 }} );
此示例来自MongoDB,它对字段“age”值大于18的文档应用索引
vql8enpb1#
没有办法创建一个“过滤索引”(像在SQL中那样)。根据docs,可以包含属性,但不能有条件地包含。您可以尝试使用稀疏索引,但我认为最好的办法是将age属性添加到"skiplist"索引中,该索引支持排序和gt/lt求值。请确保使用explain功能来验证索引使用情况。
age
gt
lt
explain
1条答案
按热度按时间vql8enpb1#
没有办法创建一个“过滤索引”(像在SQL中那样)。根据docs,可以包含属性,但不能有条件地包含。
您可以尝试使用稀疏索引,但我认为最好的办法是将
age
属性添加到"skiplist"索引中,该索引支持排序和gt
/lt
求值。请确保使用
explain
功能来验证索引使用情况。