我正在为MongoDB寻找一个很好的解决方案来解决这个问题:
有一些类别,每个类别都有X个项目
但是有些物品可以在“很多”类别中出现!
我在Unix系统上寻找类似符号链接的东西,但我找不到它。
我认为一个好主意是:
“Category1 / item1”是对象,“category2 / item44232”只是对“item1”的引用,所以当我更改“item1”时,它也会改变“item44232”。
我查看了MongoDB数据模型文档,但没有真正的解决方案。
感谢您的回复!
答案 0 :(得分:1)
在RDBMS中,您使用连接表来表示一对多关系;在MongoDB中,您使用数组键。例如,每个产品都包含一组类别ID,产品和类别都有自己的集合。如果您有两个简单的类别文件
{ _id: ObjectId("4d6574baa6b804ea563c132a"),
title: "Epiphytes"
}
{ _id: ObjectId("4d6574baa6b804ea563c459d"),
title: "Greenhouse flowers"
}
然后属于这两个类别的产品将如下所示:
{ _id: ObjectId("4d6574baa6b804ea563ca982"),
name: "Dragon Orchid",
category_ids: [ ObjectId("4d6574baa6b804ea563c132a"),
ObjectId("4d6574baa6b804ea563c459d") ]
}
了解更多:http://docs.mongodb.org/manual/reference/database-references/
答案 1 :(得分:0)
尝试从内到外查看问题:让项目列出他们所属的类别,而不是将项目列入类别。
您将能够轻松找到属于某个类别(甚至多个类别)的所有项目,并且不会出现重复,也无需更新同一项目的许多实例。
这可以非常快速高效,尤其是当您索引类别列表时。查看multikey indexes。