mongodb findAndModify (upsert) вставить поле, если документ не существует, но не обновлять поле, если документ обновляется - PullRequest
0 голосов
/ 30 мая 2018

Я хочу использовать 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 голосов
/ 30 мая 2018

Вы можете использовать $ setOnInsert :

var newUpdate = {
    $set : {newData: newData},
    $setOnInsert: {created_at: new Date()}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...