2017-12-27 32 views
0

I는, 지금은 송장 이드 (송장 ID) 트랜잭션 (오브젝트의 배열) _id 않은 인보이스 컬렉션이 거래 필드 속성으로 참조를 갖고있는 한의 액세스 어레이 그리고 트랜잭션 참조 및 참조 필드에 대한 검색 트랜잭션을 통해 루프 방법을 잘 모르겠습니다.유성 몽고 객체

이 내 시도이다,

transids 모든 거래 _id

const final = Invoices.find({ 
    invoiceId: filter.invoiceID, 
    transactions: { $in: transids } 
}).map(function (obj) { 
    return { 
    text: obj.reference, 
    }; 
}); 

답변

0

이것은 오히려 map 기능과 관련이 포함되어 있습니다. Invoices의 문서를 검색했기 때문에지도 기능의 obj이 현재 인보이스 문서입니다.

그래서 찾은 모든 거래에 대한 텍스트를 얻으려면 현재 송장 문서에 대한 모든 거래를 트래버스해야합니다.

다음 예는 각 인보이스 doc을 문서로 매핑합니다. 여기에서 트랜잭션 문서는 참조로 텍스트에 매핑됩니다.

const final = Invoices.find({ 
    invoiceId: filter.invoiceID, 
    transactions: { $in: transids } 
}).map(function (obj) { 
    const transactions = obj.transactions.map(function(transaction){ 
     return { 
      text: transaction.reference, 
     }; 
    }); 
    obj.transactions = transactions; 
    return obj; 
}); 

참고 : 참조가 다른 문서의 ID 일 경우 해당 컬렉션을 호출해야합니다.

const ref = ReferenceCollection.findOne(transaction.reference); 
//ReferenceCollection is a placeholder here 
return { 
    text: ref.text, 
};