搜尋

首頁  >  問答  >  主體

mongodb id自增問題

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
官方文檔給出了2種解決方法,我隻看了第一種的時候:

function getNextSequence(name) {
   var ret = db.counters.findAndModify(
          {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true
          }
   );

   return ret.seq;
}

function getNextSequence(name) {
   var ret = db.counters.findAndModify(
          {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true,
            upsert: true
          }
   );

   return ret.seq;
}

英文看得有點模糊,多了一個upsert到底是好還是不好?

迷茫迷茫2798 天前549

全部回覆(1)我來回復

  • 黄舟

    黄舟2017-04-22 08:58:12

    不好,除非你有唯一索引,否則可能插入多個相同名字的文檔。可能會有多個 findAndModify 函數同時運行,它們都發現找不到已有的文檔,於是都決定插入新文檔,於是就重複了。

    回覆
    0
  • 取消回覆