我在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}
这可能吗?
答案 0 :(得分:0)
您需要进行两次查询或对客户端进行排序。
答案 1 :(得分:0)
您可以将聚合方法
用作两个查询之一db.myTable.aggregate( [ { '$group': { '_id': "$kid", 'count': { '$sum': 1 } } },
{ '$match': { 'count': { '$gt': 1 } } } ] )['result']
应该会为您提供一个有多个父母的孩子的列表
[{u'count': 2, u'_id': 6384}]
然后,你可以找到那些孩子。