4

私はMongoDBinActionという本を読んでいます。について質問がありChapter 4: Document-oriented dataます。

Page 58で、本は多対多の関係の例を示しています。それはProduct文書とCategory文書を与えます。

製品

product_1

product_2

カテゴリー

category_1 category_2


私の質問

ここで多対多の関係を理解し​​ています。基本的に、 _idなどProductの配列を持つキーを持つことができます。したがって、私はこのMongoDB多対多協会のCategoryような質問をしようとはしていません。

私の質問は、についてPage 61です。この本では、多対多の関係のクエリに関する2つのクエリ例が示されています。2つのクエリは次のとおりです。

2つのクエリ

  1. どういう=>意味ですか?=>私はRubyドライバーの使用法にのみ存在すると思いました。

  2. categoryですかcategory['_id']?コレクションですか?

  3. productですかproduct['category_ids']

  4. Gardening Tools category上記のように、最初のクエリはどのように関連していますか?

この本では、これら2つのクエリについて詳しく説明していません。

多対多のクエリについて誰かがもっと説明できますか?

4

1 に答える 1

3

作成者がネイティブのMongoDBjavascriptmongoクライアント以外のドライバーの言語を使用しているように見えます。また、本の説明では、作者がCドライバーとRuby Mongoドライバーの両方を管理していると書かれているので、それは理にかなっています。

  1. はい、これ=>は言語ドライバー固有の表記法です。javascriptではありません。次のように言っているようですdb.products.find({_id: aCategoryId})。実際にはRubyハッシュ表記です。

  2. このcategory例のは、すでに取得したカテゴリドキュメントのみを表しているように見えます。この場合、それはガーデニングカテゴリのドキュメントになります。「このカテゴリIDがproductscategory_ids配列にあるすべての製品を検索する

  3. 前の質問と同様です。productはすでに取得したドキュメントです。クエリは、「IDがカテゴリIDのこの製品配列にあるカテゴリドキュメントを検索します。

  4. category次のようなもので取得した場合は、ガーデニングカテゴリになります。var category = db.category.findOne({slug: "gardening-tools"})

于 2012-07-07T23:31:46.750 に答える