gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:32:52 28 4
gpt4 key购买 nike

Tag schema结构如下:

_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”作为示例。

我必须根据给定的 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,我在我的 Angular 代码中使用 mongodb 并有一个执行此任务的函数,无论提供什么查询,我都会在我的函数中编写此查询。

最佳答案

试试这个,

public static async UpdateAgentTicketCount(agent_email: string, tag_name: string, nsp: string) {
try {
console.log(agent_email, tag_name, nsp);
for(let t of this.collection.tags){
if(t.tag==tag_name){
t.agent_list.find(agent => agent.email==agent_email).count = t.agent_list.find(agent => agent.email==agent_email).count + 1;
}
}
return this.collection;
} catch (error) {
console.log(error);
}
}

关于javascript - findOneAndUpdate() 基于查找查询条件的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54069139/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com