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

您需要在客户端执行两个查询或对它们进行排序。

于 2012-12-03T16:10:56.923 回答
0

您可以将聚合方法用作两个查询之一

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 回答