如果文档不存在,mongodb findAndModify(upsert)插入字段但如果文档正在更新则不要更新字段

时间:2018-05-30 07:26:09

标签: mongodb mongodb-query

我想使用findAndModify upsert )来修改文档。我想这样做:

  • 文档必须包含字段created_at;
  • 如果要插入新文档,创建此字段
  • 但是,如果插入现有文档, 更新 created_at

我使用findAndModify如下所示,这将更新每created_at upsert这不是我想要的。

  var acctsCollection = "accounts";
  account.created_at = new Date();
  account.newData = newData;
  var newUpdate = {
    $set : account
  };
  var options = {
    upsert  :true,
    new: true, 
  };
  collectionDriver.findAndModify(acctsCollection, query, newUpdate, options);

1 个答案:

答案 0 :(得分:1)

您可以使用$setOnInsert

var newUpdate = {
    $set : {newData: newData},
    $setOnInsert: {created_at: new Date()}
};