是否可以在 Mongoose 中引用 "this" 文档?

Is it possible to refer to "this" document in Mongoose?

我在 Node.js 中使用 Mongoose,我想知道是否可以使用 "this" 或类似机制来引用当前选定的文档。这是我正在寻找的用例:

猫鼬模式:

const mySchema = mongoose.Schema({
    position: Number,
    date: Number,
    lastEventDate: Number
});

假设在某个时间点发生了一个事件。 对于通过其位置选择的文档,我想将 "lastEventDate" 更新为文档的日期。 这是我的梦想代码:

myModel.findOneAndUpdate(
    {position: myPosition},
    {$set: {
        'lastEventDate': THISDOCUMENT.date
    }}
);

注意:我在这里使用 $set 是因为实际代码会更新子文档...

是否有内置的 "THISDOCUMENT" 参考,例如我梦寐以求的参考,可以在一个查询中完成所有操作? 或者我是否必须在更新文档之前先查询值(两次查询)。

无法在网上找到任何内容,而且在使用 "this" 方面我还是个新手。 感谢您提供任何帮助!

[编辑 :] 关于 objective 的精度 :

收集所有提供的信息,我将冒险寻找一个可能的答案!

您可以尝试类似的方法:

您的架构 JS 文件

    const mySchema = mongoose.Schema({
        position: Number,
        date: Number,
        lastEventDate: Number
    });
    mySchema.methods.doYourThing(){
            this.lastEventDate=this.date; //it will set the lastEventDate
}

mongoose.model("myModel", MySchema, "mycollection")

现在,无论何时调用 doYourThing(),所需的操作都会发生,您在拥有模式实例后调用它。

这是我自己的代码

const token = user.generateJwt(expirationDate); //send a token, it will be stored locally in the browser

它在 return user 实例的函数内部,在模型 User 中,我已经完成了一个名为 generateJwt 的函数,就像我已经展示的那样,我们有这样的东西:

return jwt.sign(
    {
      _id: this._id, //this is created automatically by Mongo
      email: this.email,
      name: this.name,
      exp: parseInt(expiry.getTime() / 1000, 10), //Includes exp as UNIX time in seconds
      level: this.level,
      lastLogin: this.lastLogin,
      failedLogin: this.failedLogin
    },
    process.env.JWT_SECRET
  ); // DO NOT KEEP YOUR SECRET IN THE CODE!

是return用户的所有信息!

请不要犹豫,添加评论和反馈,我不确定这是你想要的,但这就是为什么我理解你的要求。

另一个选项是使用 Virtuals,他们也可以访问 this