findOneAndUpdate()基于查找查询中条件的子数组

时间:2019-01-07 05:52:22

标签: javascript node.js angular mongodb

Tag模式结构如下:

_id: "abcsd12312",
nsp: "localhost.com",
tags: [
    0: { tag: "#feedback",
         agent_list: [
                  0: { email : "murtaza@local.com", count: 0},
                  1: { email: "abc@gmail.com", count: 0}
         ]
       },
    1: { tag: "#spam",
         agent_list: [
                  0: { email: "abc@live.com", count: 0},
                  1: { email: "murtaza@local.com", count: 1}
          ]
        }
     ]  

我有两个来自源的参数,它们属于我制作的函数,参数是tag_name和agent_email,例如,它们的值可以是“ #feedback”和“ murtaza@local.com”。 / p>

我必须基于给定的tag_name遍历标签集合,然后如果找到记录,则遍历其agent_list,其等于参数“ agent_email”的值。然后我必须将其“计数”增加1。

我具有以下功能:

public static async UpdateAgentTicketCount(agent_email: string, tag_name: string, nsp: string) {
    try {
        console.log(agent_email, tag_name, nsp);
        return this.collection.findOneAndUpdate({nsp: nsp, tags: {$elemMatch: {tag: tag_name}}}, {});
    } catch (error) {
        console.log(error);
    }
}

我需要一个mongodb查询来将该计数加1,我在我的角度代码中使用mongodb并具有执行此任务的功能,无论将提供什么查询,我都会将此查询写到我的函数中。

1 个答案:

答案 0 :(得分:3)

尝试一下

<?php  if($activityfeeslist)
        {
            $n = 1;
            foreach ($activityfeeslist as $rows) { ?>
              <tr>
                <td><?php echo $n++;?></td>
                <td><?php echo $rows->m_id;?></td>

                <td><?php echo $rows->Duration;?></td>
                <td><?php echo $rows->primary;?></td>

                <td><?php echo $rows->Duration;?></td>
                <td><?php echo $rows->secondary;?></td>
             </tr>
        <?php } } ?>