0

mongodb に次のドキュメントがあります。

{ "_id" : { "$oid" : "50bc8c38cb5ecd32fb8d12d3"} , "p" : 0 , "d" : <Binary Data> , "kid" : 6384}
{ "_id" : { "$oid" : "s6bc8c3phg5ecd32bbgd12f3"} , "p" : 1 , "d" : <Binary Data> , "kid" : 6384}
{ "_id" : { "$oid" : "k7bc8kf8vg5echy2bbgd12m5"} , "p" : 1 , "d" : <Binary Data> , "kid" : 6385}
 { "_id" : { "$oid" : "k7bc8kf8vg5echy2bbgd12m5"} , "p" : 1 , "d" : <Binary Data> , "kid" : 6386}

同じ子供で p が異なるものだけを返すようにデータベースにクエリを実行したいと思います。子供ごとに、存在する場合は 2 行を返す必要があります。それ以外の場合はありません。

例では、結果は次のようになります。

{ "_id" : { "$oid" : "50bc8c38cb5ecd32fb8d12d3"} , "p" : 0 , "d" : <Binary Data> , "kid" : 6384}
{ "_id" : { "$oid" : "s6bc8c3phg5ecd32bbgd12f3"} , "p" : 1 , "d" : <Binary Data> , "kid" : 6384}

それは可能ですか?

4

2 に答える 2

0

2 つのクエリの 1 つとして集計メソッドを使用できます

db.myTable.aggregate( [ { '$group': { '_id': "$kid", 'count': { '$sum': 1 } } }, 
                        { '$match': { 'count': { '$gt': 1 } } } ] )['result'] 

複数の親を持つ子供のリストが表示されます

[{u'count': 2, u'_id': 6384}]

次に、それらの子供たちを見つけることができます。

于 2012-12-03T18:07:11.733 に答える
0

2 つのクエリを実行するか、クライアント側で並べ替える必要があります。

于 2012-12-03T16:10:56.923 に答える