찾다

 >  Q&A  >  본문

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일 전555

모든 응답(1)나는 대답할 것이다

  • 黄舟

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

    아니요, 고유한 색인이 없으면 동일한 이름을 가진 여러 문서를 삽입할 수 있습니다. 동시에 여러 개의 findAndModify 기능이 실행 중일 수 있습니다. 모두 기존 문서를 찾을 수 없다는 사실을 발견하고 새 문서를 삽입하기로 결정하고 프로세스가 반복됩니다.

    회신하다
    0
  • 취소회신하다