Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用mongodb和node js的Instagram式社交网络_Node.js_Mongodb_Mongoose_Social Networking_Graph Databases - Fatal编程技术网

Node.js 使用mongodb和node js的Instagram式社交网络

Node.js 使用mongodb和node js的Instagram式社交网络,node.js,mongodb,mongoose,social-networking,graph-databases,Node.js,Mongodb,Mongoose,Social Networking,Graph Databases,在我的应用程序中,我将mongodb与节点js一起使用。我们有用户集合和事件集合 Users :- "user":{ "name":[name], "email":[email] } Events :- "event":{ "title":[title], "venue":[venue] } 以前,用户只能关注事件,但不能相互关注。现在,我还在用户周围建立社交网络,因此用户可以相互关注,他们的订阅源也会相应地改变,就像Instagram一样 所以我的问题是,因为我的主要数据库是Mon

在我的应用程序中,我将mongodb与节点js一起使用。我们有用户集合和事件集合

Users :-  "user":{
"name":[name],
"email":[email]

}

Events :-  "event":{
"title":[title],
"venue":[venue]

}
以前,用户只能关注事件,但不能相互关注。现在,我还在用户周围建立社交网络,因此用户可以相互关注,他们的订阅源也会相应地改变,就像Instagram一样


所以我的问题是,因为我的主要数据库是Mongodb,所以我应该只使用Mongodb建立这个社交网络,还是应该使用一些Graph db,将我所有的用户数据从Mongo db放到Graph db,并同时维护这两个数据库呢?一种方法是使用。如果定义用户类型和事件类型,则可以编写类似以下内容的graphql查询:

query {
   user(name: "Sally") {
     followed_users {
       name
     }
     followed_events {
       title
     }
   }
}
这本质上是将数据表示为一个图形,但graphql将触发一系列mongodb查询(查看resolve函数,想象一个Mongo查询而不是data[args.id]),以在后台获取所有信息,然后将其组合成一个JSON响应

更具侵入性的选择是从MongoDB切换到。 它是一个像MongoDB一样的文档存储,所以感觉应该很熟悉,但是如果您添加一个额外的边集合(另一个具有_-to:和_-from:属性的文档),那么您就有了一个实际的图形,可以在DB中执行实际的连接、遍历和事务


虽然GraphQL只是以图形的形式显示数据,但ArangoDB实际上是一个图形。任何一种方法都可以解决您的问题,而不必强迫自己处理多个数据存储的复杂性和成本。

实现这一点的一种方法是在Mongo前面使用一个express server。如果定义用户类型和事件类型,则可以编写类似以下内容的graphql查询:

query {
   user(name: "Sally") {
     followed_users {
       name
     }
     followed_events {
       title
     }
   }
}
这本质上是将数据表示为一个图形,但graphql将触发一系列mongodb查询(查看resolve函数,想象一个Mongo查询而不是data[args.id]),以在后台获取所有信息,然后将其组合成一个JSON响应

更具侵入性的选择是从MongoDB切换到。 它是一个像MongoDB一样的文档存储,所以感觉应该很熟悉,但是如果您添加一个额外的边集合(另一个具有_-to:和_-from:属性的文档),那么您就有了一个实际的图形,可以在DB中执行实际的连接、遍历和事务

虽然GraphQL只是以图形的形式显示数据,但ArangoDB实际上是一个图形。无论哪种方式,您都可以解决问题,而不必强迫自己处理多个数据存储的复杂性和成本