【发布时间】:2017-10-29 07:32:03
【问题描述】:
我在 ArangoDb 中的集合包含具有此架构的对象(简化):
{
"userName": "Billy",
"email": "Billy@test.com",
"logins": [
{
"authenticationTokens": [],
"loginProvider": "Facebook",
"providerKey": "123",
"providerDisplayName": null
}
],
"roles": [],
"claims": []
}
这是由 BorderEast aspnetcore-identity-arangodb 在 ArangoDb 上实现的 ASPNetCore.Identity
问题:
要使用 Facebook 进行身份验证,它使用 AQL 查询
for u in IdentityUser for l in u.logins filter l.loginProvider == "Facebook" && l.providerKey == "123" return u
效果很好但不使用任何索引
Indexes used:
none
我已经尝试过索引:
db.IdentityUser.ensureIndex({ type: "hash", fields: [ "logins[*].loginProvider", "logins[*].providerKey" ] });
db.IdentityUser.ensureIndex({ type: "hash", fields: [ "logins[*].loginProvider" ] });
db.IdentityUser.ensureIndex({ type: "hash", fields: [ "logins[*].providerKey" ], unique: true });
没有一个被使用。
有人可以建议该查询的索引应该是什么样子吗?
【问题讨论】:
-
推送了新的 nuget 包以支持您的索引。在某些时候,我会将查询放入配置中以使其更容易:)
标签: indexing asp.net-identity arangodb