我有一个包含如下文档的集合:
{
"_id" : "naTdAOPLSniDIHkZ78-E3ld0nAkLNHpW",
"UserId" : "1",
"KeyType" : "secret",
"CreatedDate" : ISODate("2019-08-08T19:30:47.902+0000"),
"ExpiryDate" : null,
"CancelledDate" : null,
"Notes" : null,
}
我创建了一个密钥:(摘自db.getIndexes()
)
"key" : {
"UserId" : 1.0,
"CancelledDate" : 1.0,
"ExpiryDate" : 1.0
},
我必须回答类似的查询
我刚刚注意到,查询中包含日期之一(大多数文档都包含NULL值)后,始终会执行完全收集扫描,这非常糟糕 >!如果我仅查询特定的UserId
,则使用索引。
那么这种情况下最好的索引策略是什么?我应该为$type
创建带有特殊NULL
表达式的partial index还是必须创建更好的查询?我在客户端上使用C#和JAVA。