Meteor Mongo,访问对象数组

时间:2017-12-27 10:36:24

标签: mongodb meteor

我有一个发票集合,它有_id(发票ID)和交易(对象数组),此交易字段有金额参考作为属性,现在我有发票ID和交易参考,我不知道如何循环搜索参考字段的交易。

这是我的尝试,

transids包含所有事务_id

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

1 个答案:

答案 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,
};