【发布时间】:2016-06-26 10:08:00
【问题描述】:
我们目前正在将一组权限作为集合上的地图进行管理。 每组权限都以用户的 id 作为键来归档。由于某种原因,该密钥当前是 BSONObjectID 的字符串化版本。
我想在键上维护一个索引,这样我就可以只查找相关的权限集,还可以找到那些存在特定用户权限的文档。
编辑:添加示例:
示例:
{"_id" : {"$oid" : "xxxxxx"},
"irrelevantData" : "Document1 data...",
"permissions" : {
"key1" : {"perm1" : true, "perm2: false},
"key3" : {"perm1" : true, "perm2: false}
}
{"_id" : {"$oid" : "yyyyyy"},
"irrelevantData" : "Document2 data...",
"permissions" : {
"key1" : {"perm1" : false, "perm2: true},
"key2" : {"perm1" : true, "perm2: false}
}
在上面的示例中,我希望我的索引能够仅选择权限中存在“key2”的文档。
模型是这样的:
case class relevantCollection(
_id: BSONObjectID,
irrelevantData: String,
permissions: Option[Map[String, Map[String, Boolean]]]
)
如何在键而不是值上创建索引? 是否存在任何性能问题,关于此键是 String 还是 BSONObjectID?
【问题讨论】:
-
在询问如何使用 ReactiveMongo 之前,我会检查 MongoDB index doc 并尝试使用 MongoShell。
-
@cchantep:我确实检查了MongoDB index doc,但没有找到任何关于如何索引键的信息。也许我读错了?如果我能按照你的建议为 MongoShell 找到一个可行的解决方案,我会很高兴:)
-
因此,如果您在 MongoDB 文档中找不到方法,那么任何客户端库都无法做到。
-
@cchantep:我不知道我的理解是否正确,但我将您的第一条评论翻译为“尝试自己解决您的问题”,第二条评论为“如果可以的话”自己找不到答案,没有解决办法”?尽管您可能是对的,但我仍然希望有人能够反思我的问题的内容。