0

私はmongodbに次のデータを持っています

domain1 url1 level processed
domain1 url2 level processed
domain1 url3 level processed
domain1 url4 level processed
domain2 url5 level processed
domain2 url6 level processed
domain2 url7 level processed
domain2 url8 level processed
domain3 url9 level processed
domain3 url10 level processed
domain3 url11 level processed
domain3 url12 level processed

levelは整数でprocessed、ブール値のフラグです。毎回、レベル順に並べられた各ドメインのドキュメントを 1 つだけ選択する必要があります。最初のクエリが返されます

domain1 url1 level processed
domain2 url5 level processed
domain3 url9 level processed

mongodbでそれを行う最速の方法は何ですか?

4

1 に答える 1

1

集計を使用できます:

db.stmp.aggregate( {$sort: {domain: 1}}, 
                   {$group: {_id: '$domain', 
                             url: {$first: '$url'}, 
                             level: {$first: '$level'}, 
                             processed: {$first: '$processed'}})

ソート フィールド (ドメイン) でインデックスを作成するか、$sort の前に $match を配置 (およびインデックス化) すると、これはすぐに実行されます ...

于 2013-01-21T14:30:59.070 に答える