node.js - 像Instagram一样使用mongodb和node js的社交网络

标签 node.js mongodb mongoose social-networking graph-databases

我在我的应用程序中使用 mongodb 和 Node js。我们有用户集合和事件集合。

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

}

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

}

以前用户只能关注事件,但不能互相关注,现在我也在围绕用户建立社交网络,这样用户就可以互相关注,他们的提要也会相应地改变,就像 Instagram 一样。

所以我的问题是,由于我的主数据库是 Mongodb,所以我应该仅使用 Mongodb 来建立这个社交网络,还是应该使用一些图形数据库并将所有用户数据从 Mongo db 放入图形数据库并同时维护两个数据库

最佳答案

实现此目的的一种方法是运行一个 Express 服务器 GraphQL在 Mongo 前面使用 express-graphql 。如果您定义用户类型和事件类型,您可以编写如下的 graphql 查询:

query {
   user(name: "Sally") {
     followed_users {
       name
     }
     followed_events {
       title
     }
   }
}

这本质上将您的数据呈现为图表,但 graphql 会在幕后触发一系列 mongodb 查询(查看解析函数 here 并想象 Mongo 查询而不是 data[args.id])以获取所有信息,然后将其组合成单个 JSON 响应。

更具侵入性的选择是从 MongoDB 切换到 ArangoDB 。 它是一个像 MongoDB 一样的文档存储,所以它应该非常熟悉,但是如果您添加额外的边集合(另一个带有 _to: 和 _from: 属性的文档),那么您就拥有了一个实际的图,并且可以在数据库中进行实际的连接、遍历和事务。

虽然 GraphQL 只是将数据呈现为图表,但 ArangoDB 实际上是 full-on graph database 。无论哪种方式,您都可以解决您的问题,而无需强制自己处理多个数据存储的复杂性和成本。

关于node.js - 像Instagram一样使用mongodb和node js的社交网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35427188/

相关文章:

javascript - 如何在javascript中提取URL的元数据?

javascript - 关于 Node.js 的问题。架构和模型

node.js - mongodb:如何更新单个文档的嵌套数组项中的多个字段

javascript - 为什么带有 MongoDB 的 Node.js Express 不响应获取 API 调用(ReactJS 和 Redux)?

node.js - Mongodb 基于具有计数的唯一子集合属性聚合搜索结果?

javascript - Mongoose 获取所有匹配数组交集的文档

node.js - 无论如何使用 Node js 发送 WhatsApp 消息?

javascript - 如何验证 Mongoose 更新

node.js - 使用 Node.js 和 MongoDB 的警报系统

node.js - 学习 MEAN Stack 的最佳资源