在此处输入图像描述

我如何在MongoDB中设计这样的方案?我想没有外键!

推荐答案

您可能对使用Mongoid或MongoMapper之类的ORM感兴趣.

http://mongoid.org/docs/relations/referenced/1-n.html

在像MongoDB这样的NoSQL数据库中,没有"表",而是集合.文档在集合中分组.您可以在一个集合中拥有任何类型的文档,以及任何类型的数据.基本上,在NoSQL数据库中,由您决定如何组织数据及其关系(如果有).

Mongoid和MongoMapper所做的是为您提供方便的方法来轻松建立关系.看看我给你的链接,问任何问题.

编辑:

在mongoid中,您可以这样编写方案:

class Student
  include Mongoid::Document

    field :name
    embeds_many :addresses
    embeds_many :scores    
end

class Address
  include Mongoid::Document

    field :address
    field :city
    field :state
    field :postalCode
    embedded_in :student
end

class Score
  include Mongoid::Document

    belongs_to :course
    field :grade, type: Float
    embedded_in :student
end


class Course
  include Mongoid::Document

  field :name
  has_many :scores  
end

编辑:

> db.foo.insert({group:"phones"})
> db.foo.find()                  
{ "_id" : ObjectId("4df6539ae90592692ccc9940"), "group" : "phones" }
{ "_id" : ObjectId("4df6540fe90592692ccc9941"), "group" : "phones" }
>db.foo.find({'_id':ObjectId("4df6539ae90592692ccc9940")}) 
{ "_id" : ObjectId("4df6539ae90592692ccc9940"), "group" : "phones" }

您可以使用ObjectId来处理文档之间的关系.

Sql相关问答推荐

如何在PostgreSQL中同时为id s列表执行多个update语句?'

LEFT JOIN不显示计数0我期望的方式

没有循环的SQL更新多个XML node 值

解析SQL Server中的嵌套JSON

PostgreSQL基于2个COLS的任意组合 Select 唯一行

获得第三名或最老的记录

将JSON文件导入Postgres 16数据库时出错(22P04上次预期列之后的额外数据)

STContains、STIntersections和STWithin返回错误的地理结果

将二维数组的第一个和第二个元素取消嵌套到两个一维数组中

如何在android房间中进行多个加入

Grafana SQL 模板变量(值、文本)

日期逻辑(查找过go 90 天内的第一个匹配行)

SQL SUM Filter逻辑解释

SQL Select 字母范围没有给我任何东西

获取所有用户的第一次和最后一次发货以及到达日期

postgres按组消除分区中的NULLS

连续几天购买的客户

如何计算每行出现的次数并显示在另一个表中?

如何刷新在视图之上创建的表

在 MindsDB SQL 编辑器中运行 PostgreSQL 条目 ID 时出现未知 Select 目标错误