Node.js 猫鼬。是否可以在一次操作中删除(如果存在)和插入(如果不存在)?

Node.js 猫鼬。是否可以在一次操作中删除(如果存在)和插入(如果不存在)?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个类似的模块,它将被大量使用!如果对象喜欢或不喜欢,用户将发送喜欢的请求 (like和inspect正在调用相同的REST端点) 我可以执行findbyiandremove并检查它是否删除了任何内容,如果没有,则创建类似的内容 我可以findOne这样做,如果存在则删除,如果不存在则创建 但这种方式最有可能是将两个操作发送到数据库。(部分病例为1例手术) 我想问的是:一次手术能做到这一点吗 *像chema字段: \u id \u对象 \u用户 createdAt 更新#1: 根据要求,我喜

我有一个类似的模块,它将被大量使用!如果对象喜欢或不喜欢,用户将发送喜欢的请求

(like和inspect正在调用相同的REST端点)

我可以执行
findbyiandremove
并检查它是否删除了任何内容,如果没有,则创建类似的内容

我可以
findOne
这样做,如果存在则删除,如果不存在则创建

但这种方式最有可能是将两个操作发送到数据库。(部分病例为1例手术)

我想问的是:一次手术能做到这一点吗

*像chema字段:

\u id
\u对象
\u用户
createdAt

更新#1: 根据要求,我喜欢的型号:

更新2:输入参数

ps:用户id基于其令牌添加

{
    "_entity" : "5d725a1b7b292f5f8ceff788",
    "type" : "path"
}

我真的无法判断这一点,但您可能会重新考虑为“喜欢”和“不喜欢”提供单独的端点,或者指定哪些应该通过某种参数来完成。这样可以避免出现问题,同时可以防止UI和RESTAPI不同步。设想一个用户单击“喜欢”,因为用户界面认为该项目当前不受欢迎,但实际上用户将取消该项目的链接,因为当前显示的状态不正确。@Dennis感谢您的回复。最初,我编写了两个端点,并要求前端以这种方式使用它。但是他们坚持在使用它的应用程序上的LIKE按钮上有一个操作。我反对,但我必须做这项工作。至少我能做的是不要耗尽数据库。你能将你的模式添加为代码吗?@SuleymanSah我的模型。延迟的sry。时差:)当喜欢和不喜欢时,api的输入参数是什么?
{
    "_entity" : "5d725a1b7b292f5f8ceff788",
    "type" : "path"
}