MongoDB - 查询多对多关系如何工作?

时间:2012-07-07 23:14:56

标签: mongodb nosql

我正在阅读这本书MongoDB in Action。我有一个关于Chapter 4: Document-oriented data的问题。

Page 58上,本书给出了多对多关系的一个例子。它提供了Product文档和Category文档。

产品

product_1

product_2

分类

category_1 category_2


我的问题

我理解这里的多对多关联。基本上,Product可以有一个Category _id数组的键,等等。所以我不是想问这样的问题MongoDB Many-to-Many Association

我的问题是关于Page 61,本书提供了两个关于查询多对多关系的示例查询。这是两个查询:

two queries

  1. =>是什么意思?我以为=>只存在于Ruby驱动程序中 用法。

  2. category中的category['_id']是什么?这是一个集合吗?

  3. product中的product['category_ids']是什么?

  4. 如上所述第一个查询与第一个查询相关的第一个查询如何?

  5. 本书没有详细解释这两个问题。

    有人可以解释更多关于查询多对多的内容吗?

1 个答案:

答案 0 :(得分:3)

看起来作者使用的是除本机MongoDB javascript mongo客户端之外的驱动程序语言。此外它也有意义,因为书的描述说作者维护了C和Ruby Mongo的驱动程序。

  1. =>是特定于语言驱动程序的表示法。不是javascript。似乎就像在说:db.products.find({_id: aCategoryId})。它实际上是Ruby Hash notation

  2. 该示例中的category看起来只代表您已检索过的类别文档。在这种情况下,它将是园艺类别的文档。它只是说“找到此类别ID在产品category_ids数组

  3. 中的所有产品
  4. 与上一个问题类似。 product是您已检索过的文档。查询是“查找任何类别的文档,其ID在此类别ID的此产品数组中。

  5. category如果您使用以下内容检索它,则会是园艺类别:var category = db.category.findOne({slug: "gardening-tools"})