検索

ホームページ  >  に質問  >  本文

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到底是好还是不好?

迷茫迷茫2799日前554

全員に返信(1)返信します

  • 黄舟

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

    一意のインデックスがない限り、同じ名前の複数のドキュメントを挿入する可能性があります。複数の findAndModify 関数が同時に実行されている可能性があり、それらはすべて既存のドキュメントが見つからないことが判明したため、新しいドキュメントを挿入することを決定し、プロセスが繰り返されます。

    返事
    0
  • キャンセル返事