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

Актуализирайте елемента в масива, ако съществува, иначе вмъкнете нов елемент в този масив в MongoDb

Използвайте $addToSet вместо $push .

db.push.update(
    { _id: 5 },
    { $addToSet: { "quizzes": {"wk": 6.0, "score": 8.0}, "play": {"wk": 6.0, "score": 8.0} } }
)

РЕДАКТИРАНЕ:

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

Например:Ако искаме да актуализираме quizzes поле с обекта { "wk": 7.0, "score": 8.0 } , можем да го направим в две стъпки:

Стъпка 1: $pull извадете поддокументи от quizzes масив, където "wk": 7.0 . (Нищо не се случва, ако съответстващ поддокумент не бъде намерен ).

db.push.update(
    { _id: 5 },
    { $pull: { "quizzes": { "wk": 7.0 } } }
)

Стъпка 2: $addToSet поддокумента.

db.push.update(
    { _id: 5 },
    { $addToSet: { "quizzes": {"wk": 7.0, "score": 8.0} } }
)

Можете да комбинирате горните две команди за актуализиране с помощта на bulk.find().update()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Възникна изчакване след 30 000 ms избор на сървър с помощта на CompositeServerSelector

  2. MongoDB Ruby Driver 2.5.x Проблеми с чувствителността на малки и големи букви с имена на хостове в набори реплики

  3. Добавяне на елемент към масива от документи на MongoDB в PyMongo без повторно вмъкване

  4. Как да защитите MongoDB с потребителско име и парола

  5. Редовен израз за MongoDB ObjectID