1

アイテムの関係とその属性を構造に保存します。

{'item': <item_id>,
 'rel_name': 'sizes:4762',
 'rel_type': 'sizes',
 'rel_value': '4762'}

そして、mongodb シェルで完全に機能する mongoDB クエリを用意します。

db.relations.distinct(
    'rel_name',
    {item:{
        $in: db.items.distinct('id', {
            'attributes.cat': {$in:[477]},
            'attributes.sizes': {$in:[4762,5071,5072,5089,5555,903]}
        })
    }}
)

そして、items.distinct の値を取得する際のオーバーヘッドを回避するために asyncmongo で実行し、それを mongo に戻す必要があります (10000 を超える可能性があります) クエリ全体を文字列として渡して結果を取得する方法はありますか?

4

1 に答える 1

1

javascriptを実行するため、これはシェルとdb.eval()でのみ機能します。最後に、最終的に2つの異なるコマンドをmongoサーバーに送信する必要があります。

  1. 送信するリストにあるdb.itemsコレクションからすべてのサイズを収集します

  2. それぞれの「real_name:id」を持つものと一致します。

非同期フレームワークを使用する場合、最適化するのは、cursor.next()イベントごとに2番目のクエリを処理できることだけです。それでも、これらは送信する2つの個別のクエリです。

于 2012-10-31T15:48:46.333 に答える