MongoDB 可过滤动态属性的最佳架构?
MongoDB best schema for filterable, dynamic attributes?
我有大量用户。每个用户都可以有角色。我希望能够根据用户拥有的角色来过滤用户。以下两种方法之间是否存在性能差异?我可以想象第二种方法更快,更适合我的用例。我还假设第二个索引会更小。有任何想法吗?谢谢!
数组逼近
{
name: "Paul",
roles: [
"system administrator",
"network administrator",
"solutions architect"
]
}
属性方法
{
name: "Paul",
roles: {
system_administrator: true,
network_administrator: true
solutions_architect: true
}
}
第一种方法更好,因为您可以使用 $push
、$pull
等数组运算符轻松 add/remove/update 数组中的 roles
项
此外,索引第一种类型更容易,因为您只需索引 roles
字段。
对于下一个选项,如果你想专门为每一种类型的角色建立索引,你将不得不创建很多索引。
所以我投第一票!
我有大量用户。每个用户都可以有角色。我希望能够根据用户拥有的角色来过滤用户。以下两种方法之间是否存在性能差异?我可以想象第二种方法更快,更适合我的用例。我还假设第二个索引会更小。有任何想法吗?谢谢!
数组逼近
{
name: "Paul",
roles: [
"system administrator",
"network administrator",
"solutions architect"
]
}
属性方法
{
name: "Paul",
roles: {
system_administrator: true,
network_administrator: true
solutions_architect: true
}
}
第一种方法更好,因为您可以使用 $push
、$pull
等数组运算符轻松 add/remove/update 数组中的 roles
项
此外,索引第一种类型更容易,因为您只需索引 roles
字段。
对于下一个选项,如果你想专门为每一种类型的角色建立索引,你将不得不创建很多索引。
所以我投第一票!