【发布时间】:2018-06-08 02:56:42
【问题描述】:
我一直在 Mongo 上测试部分索引,似乎在 $match 阶段使用 aggregation expression 会干扰使用正确的索引。
例如,我有一个带有以下文档的 data 集合:
{
"type": "person",
"value": {
"id": 1,
"name": "Person 1",
"age": 10
}
},
{
"type": "person",
"value": {
"id": 2,
"name": "Person 2",
"age": 20
}
}
我为{"type": "person"} 文档创建了一个部分索引。当我运行聚合时
{
"$match": {
"type": "person",
"value.age": { "$gte": 15 }
}
}
索引记录了一次命中,但如果我进行下一次聚合,它不会。
{
"$match": {
"$expr": {
"$and": [
{ "$eq": ["$type", "person"] },
{ "$gte": ["$value.age", 15] },
]
}
}
}
$match 中的部分索引和聚合表达式是否不兼容?有什么办法可以使这项工作?
PS:我需要使用聚合表达式,因为我正在使用 let 和管道 syntax 制作 $lookup。
【问题讨论】:
标签: mongodb indexing match aggregation