Map Reduce操作を行わずに、必要な情報を取得することができます。
最初に "{enabled}:1}と一致するドキュメントの" Products "コレクションをクエリし、そのクエリから$ SHOP_IDのリストを取得できます(これは"ショップ "の_id値に対応しています)コレクション)を作成し、配列に入れ、 "Shops"コレクションの$ inクエリを "name"のクエリと組み合わせて実行します。のリストを生成し、上記クエリから
> db.products.find({"enabled" : 1})
{ "_id" : 1, "type" : "first", "enabled" : 1, "shop" : 3 }
{ "_id" : 3, "type" : "second", "enabled" : 1, "shop" : 5 }
:{1 "有効"}
> db.products.find()
{ "_id" : 1, "type" : "first", "enabled" : 1, "shop" : 3 }
{ "_id" : 2, "type" : "second", "enabled" : 0, "shop" : 4 }
{ "_id" : 3, "type" : "second", "enabled" : 1, "shop" : 5 }
> db.shops.find()
{ "_id" : 3, "name" : "L" }
{ "_id" : 4, "name" : "L" }
{ "_id" : 5, "name" : "M" }
>
最初に一致するすべてのドキュメントを検索:2つのコレクション所与例えば
、 _ids:
> var c = db.products.find({"enabled" : 1})
> shop_ids = []
[ ]
> c.forEach(function(doc){shop_ids.push(doc.shop)})
> shop_ids
[ 3, 5 ]
最後に、shop_ids配列の_id値を持つドキュメントの店舗コレクションをクエリします{name: "L"}にもマッチします。
> db.shops.find({_id:{$in:shop_ids}, name:"L"})
{ "_id" : 3, "name" : "L" }
>
Mongoとの結合操作に相当することに関して同様の質問がありました。ここで、あなたが削減地図を試したい場合は
How to join MongoDB collections in Python?
結合する操作を削減増分地図を使用したユーザーからのブログ記事へのリンクです:この質問は、追加のガイダンスを提供することがありますいくつかのリンクを提供します2つのコレクションからの値。
http://tebros.com/2011/07/using-mongodb-mapreduce-to-join-2-collections/
希望すれば、あなたのコレクションから必要な情報を取得することができます。
これらのコレクションに頻繁に参加する必要がありますか?もしそうなら、あなたはMongoDbを使って再考するか、あなたのスキーマをもう一度見直したいかもしれません。 –
こんにちは、これで運がありましたか? Marcの答えはかなりよく見えますが、私は何らかのフィードバックが必要だと思います。 – halfer
実際には、SQLフレンドリーなデータベースに移動しました。モンゴーは他の操作のために良いです –