邻接列表已经足够好了。同样重要的是,它接近于用于表示简单图形的典型数据结构,并且可以使在数据库和应用程序之间移动数据变得非常简单。但如果你忽略了这一点(而且事实上这些建议都离题了),我会说使用neo4j;)+1代表zero323的答案。MongoDB应该这

邻接列表已经足够好了。同样重要的是,它接近于用于表示简单图形的典型数据结构,并且可以使在数据库和应用程序之间移动数据变得非常简单。但如果你忽略了这一点(而且事实上这些建议都离题了),我会说使用neo4j;)+1代表zero323的答案。MongoDB应该这,mongodb,Mongodb,邻接列表已经足够好了。同样重要的是,它接近于用于表示简单图形的典型数据结构,并且可以使在数据库和应用程序之间移动数据变得非常简单。但如果你忽略了这一点(而且事实上这些建议都离题了),我会说使用neo4j;)+1代表zero323的答案。MongoDB应该这样使用。如果无法更改模式,可以使用查询语言获取所有数据,构建图形,然后应用基本的叶移除算法,但是如果你的图形有太多的节点,它将严重滞后。该模式不允许典型的面向图形的数据库问题,除非你在后面和后面以及连接类型和顶点数量等的详尽列表,MongoDB



邻接列表已经足够好了。同样重要的是,它接近于用于表示简单图形的典型数据结构,并且可以使在数据库和应用程序之间移动数据变得非常简单。但如果你忽略了这一点(而且事实上这些建议都离题了),我会说使用neo4j;)+1代表zero323的答案。MongoDB应该这样使用。如果无法更改模式,可以使用查询语言获取所有数据,构建图形,然后应用基本的叶移除算法,但是如果你的图形有太多的节点,它将严重滞后。该模式不允许典型的面向图形的数据库问题,除非你在
后面
后面
以及连接类型和顶点数量等的详尽列表,MongoDB不适合面向图形的数据库操作,因为如果没有大量的查询或更糟的查询,您就无法跟踪关系,带回大量文档,只在本地构建图形,然后丢弃数据进行查询。@WiredPairie我完全同意,但邻接列表是我能想到的唯一表示形式,至少在一定程度上适合MongoDB。有时,最好的答案是说它不起作用。有许多记录良好的面向图形的数据库可能会在一瞬间解决这个问题。@WiredPairie当您想到它时,MongoDB的使用方式非常频繁,很难证明其合理性。我学会了不争论,并假设他们知道自己在做什么。我也不是在猜测这里的大局。对于某些应用程序,使用索引邻接列表就足够了。同样重要的是,它接近于用于表示简单图形的典型数据结构,并且可以使在数据库和应用程序之间移动数据变得非常简单。但如果你忽略了这一点(而且事实上这些建议都离题了),我会说使用neo4j;)+1代表zero323的答案。MongoDB应该这样使用。如果无法更改模式,可以使用查询语言获取所有数据,构建图形,然后应用基本的叶移除算法,但是如果你的图形有太多的节点,它将严重滞后。该模式不允许典型的面向图形的数据库问题,除非你在
后面
后面
以及连接类型和顶点数量等的详尽列表,MongoDB不适合面向图形的数据库操作,因为如果没有大量的查询或更糟的查询,您就无法跟踪关系,带回大量文档,只在本地构建图形,然后丢弃数据进行查询。@WiredPairie我完全同意,但邻接列表是我能想到的唯一表示形式,至少在一定程度上适合MongoDB。有时,最好的答案是说它不起作用。有许多记录良好的面向图形的数据库可能会在一瞬间解决这个问题。@WiredPairie当您想到它时,MongoDB的使用方式非常频繁,很难证明其合理性。我学会了不争论,并假设他们知道自己在做什么。我也不是在猜测这里的大局。对于某些应用程序,使用索引邻接列表就足够了。同样重要的是,它接近于用于表示简单图形的典型数据结构,并且可以使在数据库和应用程序之间移动数据变得非常简单。但如果你忽略了这一点(而且事实上这些建议都离题了),我会说使用neo4j;)
{ "user_id": 1, "follower_id": 2 }
{ "user_id": 1, "follower_id": 3 }
{ "user_id": 2, "follower_id": 1 }
{ "user_id": 2, "follower_id": 3 }
{ "user_id": 3, "follower_id": 4 }
{ "user_id": 5, "follower_id": 2 }
db.graph.aggregate(
        {$project: {index: {$const: [0, 1]}, user_id: 1, follower_id: 1}},
        {$unwind: "$index"},
        {$project: {id: {$cond: [{$eq: ["$index", 0 ]}, "$user_id", "$follower_id"]} }},
        {$group: {_id: "$id", count: {$sum: 1}}},
        {$match: {count: {$lte: 1}}}
).result.forEach(function(node) { db.graph.remove({user_id: node._id});})
{
    user_id: 1,
    follows: [2, 3],
    followed_by: [2]
}