我有一个发票集合,它有_id(发票ID)和交易(对象数组),此交易字段有金额和参考作为属性,现在我有发票ID和交易参考,我不知道如何循环搜索参考字段的交易。
这是我的尝试,
transids包含所有事务_id
const final = Invoices.find({
invoiceId: filter.invoiceID,
transactions: { $in: transids }
}).map(function (obj) {
return {
text: obj.reference,
};
});
答案 0 :(得分:0)
这与map
功能相关。地图功能的obj
是您当前的发票凭证,因为您在Invoices
中搜索了文档。
因此,如果您想获取所有已找到的交易的文本,则需要遍历当前发票凭证的所有交易。
以下示例将每个发票文档映射到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;
});
注意:如果引用只是另一个doc的id,则需要调用相应的集合。
const ref = ReferenceCollection.findOne(transaction.reference);
//ReferenceCollection is a placeholder here
return {
text: ref.text,
};