我的代码是:
X.findOneAndUpdate(
{
'x' : x,
'date' : { $gte : cutOffDate }
},
{ date : Date.now() }, //does not work since it will override existing dates
{ upsert : true }
);
我希望在一段时间内找到最新的X,如果找不到X,请创建一个并将时间设置为现在。但如果我确实找到了X,请不要更新时间。我该怎么做?
在mongoose架构中设置默认时间不起作用: https://github.com/LearnBoost/mongoose/issues/624
答案 0 :(得分:2)
只有在upsert需要插入时,才能使用$setOnInsert
指定要设置的字段:
X.findOneAndUpdate(
{
'x' : x,
'date' : { $gte : cutOffDate }
},
{ $setOnInsert: { date : Date.now() } },
{ upsert : true }
);