从SQLServer到MONGODB:设计问题

从SQLServer到MONGODB:设计问题,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,这是我第一次希望在开发中看到SQL Server以外的其他数据库 MongoDB是我的项目的一个很好的选择 我很难理解的是MONGODB的“设计” 用户(表) 朋友(表) 有了这个SQL表,我想让一个用户成为其他用户(如Facebook)的朋友 MongoDB的最佳设计是什么?考虑将好友ID嵌套在用户文档中: { _id: 7, name: "Johnny", address: "Acme St.", friends: [8, 9, 15] } 一方面,您不需要

这是我第一次希望在开发中看到SQL Server以外的其他数据库

MongoDB是我的项目的一个很好的选择

我很难理解的是MONGODB的“设计”

用户(表)

朋友(表)

有了这个SQL表,我想让一个用户成为其他用户(如Facebook)的朋友


MongoDB的最佳设计是什么?

考虑将好友ID嵌套在
用户
文档中:

{
    _id: 7,
    name: "Johnny",
    address: "Acme St.",
    friends: [8, 9, 15]
}

一方面,您不需要连接来获取好友(至少ID),因为所有内容都嵌套在单个文档中,模式看起来更令人愉快。另一方面,为了找到真正的朋友,你遇到了N+1问题。但是,ID的获取相当便宜,也考虑缓存。

考虑在代码中嵌套好友ID >用户< /COD>文档:

{
    _id: 7,
    name: "Johnny",
    address: "Acme St.",
    friends: [8, 9, 15]
}

一方面,您不需要连接来获取好友(至少ID),因为所有内容都嵌套在单个文档中,模式看起来更令人愉快。另一方面,为了找到真正的朋友,你遇到了N+1问题。但是,ID的获取相当便宜,也考虑缓存。< / P> OK,假设我有1个或10个朋友。MunGDB文档大小限制为16 MIB(),也有操作嵌套数组而不取整数组本身。假设我有1个或10个朋友?MunGDB文档大小限制为16 MIB(),还有一些操作可以在不获取整个数组本身的情况下使用嵌套数组。
{
    _id: 7,
    name: "Johnny",
    address: "Acme St.",
    friends: [8, 9, 15]
}