mongodb - 许多馆藏中的一个文件

时间:2013-08-27 10:42:17

标签: mongodb database nosql

我正在为MongoDB寻找一个很好的解决方案来解决这个问题:
有一些类别,每个类别都有X个项目 但是有些物品可以在“很多”类别中出现!

我在Unix系统上寻找类似符号链接的东西,但我找不到它。

我认为一个好主意是:
“Category1 / item1”是对象,“category2 / item44232”只是对“item1”的引用,所以当我更改“item1”时,它也会改变“item44232”。

我查看了MongoDB数据模型文档,但没有真正的解决方案。

感谢您的回复!

2 个答案:

答案 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