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

MongoDB atomic findOrCreate:findOne, вмъкнете, ако не съществува, но не актуализирайте

Започвайки с MongoDB 2.4, вече не е необходимо да разчитате на уникален индекс (или друго решение) за атомарно findOrCreate подобни операции.

Това е благодарение на $setOnInsert оператор нов за 2.4, който ви позволява да зададете актуализации, които трябва да се случват само при вмъкване на документи.

Това, комбинирано с upsert опция, означава, че можете да използвате findAndModify за постигане на атомно findOrCreate -подобна операция.

db.collection.findAndModify({
  query: { _id: "some potentially existing id" },
  update: {
    $setOnInsert: { foo: "bar" }
  },
  new: true,   // return new doc if one is upserted
  upsert: true // insert the document if it does not exist
})

Като $setOnInsert засяга само вмъкнатите документи, ако бъде намерен съществуващ документ, няма да настъпи промяна. Ако не съществува документ, той ще въведе такъв с посочения _id, след което ще извърши само вмъкването. И в двата случая документът се връща.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $project:Възможно ли е достъп до свойство на резултат от израз само на един етап?

  2. Как да извършвам заявка от Mongoose pre hook в приложение Node.js / Express?

  3. Монгос Инсталиране/настройка в Elastic Beanstalk

  4. Как мога да актуализирам множество документи в mongoose?

  5. съюз за същата колекция в mongodb