Mongoose:我如何查询文档,如果找不到则创建一个,但如果找到一个文档则不更新?

时间:2014-07-20 00:03:25

标签: mongoose

我的代码是:

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

1 个答案:

答案 0 :(得分:2)

只有在upsert需要插入时,才能使用$setOnInsert指定要设置的字段:

X.findOneAndUpdate(
  { 
    'x'    : x,
    'date' : { $gte : cutOffDate } 
  },
  { $setOnInsert: { date : Date.now() } },
  { upsert : true }
);