Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
221 views
in Technique[技术] by (71.8m points)

indexing - MongoDB best schema for filterable, dynamic attributes?

I have a large collection of users. Each user can have roles. I want to be able to filter users based on which role they have. Is there a performance difference between the following two approaches? I can imagine the second approach is faster and more appropriate for my use case. I also hypothesize the index for the second one would be smaller. Any ideas? Thanks!

Array approach

{
  name: "Paul",
  roles: [
    "system administrator",
    "network administrator",
    "solutions architect"
  ]
}

Attribute approach

{
  name: "Paul",
  roles: {
    system_administrator: true,
    network_administrator: true
    solutions_architect: true
  }
}
question from:https://stackoverflow.com/questions/65928948/mongodb-best-schema-for-filterable-dynamic-attributes

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

First approach is better, because you can easily add/remove/update items in your roles array using array operators like $push, $pull etc.

Also, indexing the first type is easier, as you'd just index roles field.

For the next option, if you want to specifically index each type of role, you will have to create a lot of indexes.

So my vote will be for first!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...