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

4
我正在阅读书籍《MongoDB实战》。我对第四章“面向文档的数据”有一个问题。
在第58页,该书给出了一个多对多关系的示例。它提供了“产品”文档和“分类”文档。

产品

product_1

product_2

类别

category_1 category_2


我的问题
我了解这里的多对多关联。基本上,Product 可以有一个带有 Category _id 数组的键等。所以我不是在问这样的问题MongoDB Many-to-Many Association 我的问题是关于第61页的内容,书中给出了两个关于查询多对多关系的示例查询。以下是这两个查询:

two queries

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

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

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

  4. 第一个查询与上面第一个查询描述的 "园艺工具类别" 有什么关系?

这本书没有详细解释这两个查询。有人能更详细地解释一下如何查询多对多关系吗?

1个回答

3
看起来作者使用的是除MongoDB本地javascript mongo客户端以外的驱动程序语言。考虑到书籍描述中提到作者维护C和Ruby Mongo驱动程序,这是有意义的。
是的,=>是特定于语言驱动程序的符号。不是javascript。它似乎就像是说:db.products.find({_id: aCategoryId})。实际上,这是一种Ruby哈希符号
在这个例子中,category看起来只代表您已经检索到的一个类别文档。在这种情况下,它将是园艺类别的文档。这只是说“查找所有产品,在这些产品的category_ids数组中包含此类别ID的产品”。
与前面的问题类似。product是您已经检索到的文档。查询是说“查找任何类别文档,其中其ID在这个产品类别ID数组中”。
如果您使用类似以下方式检索到类别,则category将是Gardening Category:var category = db.category.findOne({slug: "gardening-tools"})

谢谢你的回答。是的,好的,我以为这本书是在使用终端,但你说得对,它是在使用 Ruby 代码。 - Jackson Tale
作者没有说明他的例子都将使用Ruby驱动程序吗?如果没有的话,这有点令人困惑。 - jdi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接