2016-10-24 2 views
0

_id 필드가 있지만 transactionreceipt 필드에 중복 값이있는 컬렉션이 있습니다. 고유 한 transactionreceipt으로 필터링하고 싶습니다. 해당 레코드의 전체 문서 데이터를 원합니다. 가능합니까?고유 ID를 기반으로 전체 레코드 선택 mongodb

인덱스 만 읽으면 별개를 사용하여 가져올 수 있습니다. 전체 문서도 얻을 수있는 곳이 있습니까?

{"_id": {"$oid": "580af4ce1b407e114sdvsdbf"}, 
    "transactionreceipt":"734416173864583200", 
    "type":"recharge" 
}, 
{"_id": {"$oid": "580af4ce1b407f495sagfdgaed"}, 
    "transactionreceipt":"734416173864583200", 
    "type":"recharge" 
}, 
{"_id": {"$oid": "580af4ce1b407safasfe114bf"}, 
    "transactionreceipt":"734585659418738700", 
    "type":"recharge" 
}, 
{"_id": {"$oid": "580af4ce1b407f4956436sdg"}, 
    "transactionreceipt":"734585659418738702", 
    "type":"recharge" 
}, 
{"_id": {"$oid": "580af4ce1b407f495safasgvd"}, 
    "transactionreceipt":"734723784694562800", 
    "type":"recharge" 
}, 
{"_id": {"$oid": "580af4ce1b407f495325ds"}, 
    "transactionreceipt":"734723784694562808", 
    "type":"recharge" 
} 

그리고 다른 단지 transactionreceipt 여기 아무것도 얻을 수

var tx = db.usertransactions.distinct("transactionreceipt",{"type" : "recharge"}) 
tx.forEach(statistics=>{ 
     printjson(parseFloat(statistics));// i want all details to be displayed here 
     } 
) 

같은 쿼리는 다음과 같습니다

내 데이터 세트입니다. 내가 어디로 잘못 가고 있니? 이 작업을 수행 할 수있는 집계 함수가 있습니까?

답변

0

무엇에 대한 시도하는 다음과 같은 방법 -

당신은 자세한 내용을 확인할 수 있습니다
var tx = db.usertransactions.aggregate(
[ 
    { $match: { type: "recharge" } }, 
    { 
     $group: {    
      _id : { id: { $id: "$oid" }, transactionreceipt: { $transacreceipt: "$transactionreceipt" }} 
     } 
    }, 

]) tx.forEach(statistics=>{ 
     printjson(parseFloat(statistics)); 
    }) 

- https://docs.mongodb.com/manual/reference/operator/aggregation/group/

관련 문제