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



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

Mongoose架构:

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

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

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

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

是否有一个内置的"THISDOCUMENT"引用,比如我梦想中的引用,可以在一个查询中完成所有操作?还是在更新文档之前必须先查询值(两个查询(。

在网上找不到任何东西,当谈到使用"这个"时,我是个新手。谢谢你的帮助!

[编辑:]目标精确性:

  • 我的位置只有"myPosition"来标识正确的文档,并且我想将"lastEventDate"设置为与该文档的"date"相同的值
  • 我的问题是关于效率:是否可以在单个上传查询中执行更新?还是我必须先下载"date"值,然后再将其上传回"lastEventDate"键

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

你可以试试这样的东西:

您的架构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

它在一个返回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!

它返回用户的所有信息!

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

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

最新更新