MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как внедрявате автоматично увеличаващ се първичен идентификатор в MongoDB?

Ще трябва да използвате командата findAndModify на MongoDB. С него можете атомарно да избирате и увеличавате поле.

db.seq.findAndModify({
  query: {"_id": "users"},
  update: {$inc: {"seq":1}},
  new: true
});

Това ще увеличи брояча за users колекция, която след това можете да добавите към документа преди вмъкване. Тъй като е атомен, не е нужно да се притеснявате за условията на състезанието, които водят до конфликтни идентификатори.

Не е толкова безпроблемно като auto_increment на MySQL флаг, но обикновено имате и опцията да посочите своя собствена фабрика за идентификационни номера във вашия драйвер Mongo, така че можете да внедрите фабрика, която използва findAndModify за увеличаване и връщане на идентификатори прозрачно, което води до много по-подобно на MySQL изживяване.

Недостатъкът на този подход е, че тъй като всяко вмъкване зависи от заключване на запис във вашата колекция от поредици, ако правите много записвания, в крайна сметка можете да изпаднете в затруднение на това доста бързо. Ако просто искате да гарантирате, че документите в колекция са сортирани в ред на вмъкване, тогава вижте Ограничени колекции.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Създайте база данни в MongoDB

  2. pymongo - модулът dnspython трябва да бъде инсталиран, за да се използват URI mongodb+srv://

  3. Проста реализация на маркиране с MongoDB

  4. До какво ниво MongoDB заключва записите? (или:какво означава за връзка

  5. Как да съхранявате полето за дата като ISODate() с помощта на jackson в MongoDb