具有祖先阵列的MongoDB树设计

时间:2013-08-22 10:45:20

标签: mongodb tree

我有一个关于如何在MongoDB中设计祖先树的问题。

例如,如果我们有这个:

{ "_id" : "ACL", "ancestors" : [ ], "parent" : null }
{ "_id" : "apps", "ancestors" : [ "ACL" ], "parent" : "ACL" }
{ "_id" : "3222", "ancestors" : [ "ACL", "apps" ], "parent" : "apps" }
{ "_id" : "1223", "ancestors" : [ "ACL", "apps" ], "parent" : "apps" }

这意味着我们有一棵这样的树

       ACL      
        |       
      Apps      
     /    \     
   3222  1223   

我想在每个节点下都有一个“用户”节点。但是,鉴于_id必须是独一无二的,我不能这样做。

       ACL      
        |       
      Apps      
     /    \     
   3222  1223   
  /         \   
users      users

你会如何解决这个问题?

编辑:我在这里阅读了MongoDB上的模型树信息: http://docs.mongodb.org/manual/tutorial/model-tree-structures/

1 个答案:

答案 0 :(得分:1)

我认为没有办法处理你的情况,除非你不使用“_id”作为唯一树节点,你可以考虑这个架构:

{ "_id" : ["unique guid":xxx, "tree node": "users"], "ancestors" : [ ], "parent" : null }
{ "_id" : ["unique guid":xxx, "tree node": "users"], "ancestors" : [ "ACL" ], "parent" : "ACL" }