mongoose 如何在数组中创建一个新项,如果不存在,如果存在,则用新项替换该项

k97glaaz  于 2023-02-04  发布在  Go
关注(0)|答案(1)|浏览(125)

下面是要更新或插入的对象,以防该对象不存在:

Users: {
email : 'some email'
items: [
{id: 'id1', name: 'name'},{id: 'id2', name: 'name'} ]
}
I wan

t到替换这项目入口如果存在与一个新的或创建一个新的入口在case doese不存在.非常感谢
我不知道解决办法

yzuktlbb

yzuktlbb1#

您可以通过执行以下操作来实现此功能;

let user_id = "123";
let item_name = "item Name";
let count = await Users.countDocuments({ user_id: user_id, "items.name": item_name });

1-如果文档存在,请检查条件,然后更新其值
2-否则将对象推入数组

if (count > 0) {
  await YourSchema.updateOne(
    { _id: user_id, "item.name": item_name }
  );
} 
else {
  await YourSchema.updateOne(
    { _id: user_id },
    { $push: { items: { name: item_name } } }
  );
}

相关问题