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

Meteor mongo актуализира вложен масив

Така че първото нещо, което трябва да се каже тук, е $elemMatch не е задължителен във вашия случай, тъй като искате да съпоставите само с един свойство на масива. Използвате този оператор, когато имате нужда от "две или повече" свойства от един и същ елемент на масива, за да отговарят на вашите условия. В противен случай просто използвате "точкова нотация" като стандарт.

Вторият случай тук е с $push , където този конкретен оператор означава "добавяне" на елементи към масива. Във вашия случай просто искате да „актуализирате“, така че правилният оператор тук е $set :

Activity.update(
    { "_id": activityId, "usersActivities.userId": Meteor.userId() },
    {
        "$set": {
            'usersActivities.$.startDate': start,
            'usersActivities.$.endDate': end
        }
    }
)

Така че позиционният $ операторът ето това, което съответства на "намерения индекс" от елемента на масива и позволява $set оператор, за да "промените" елементите, съответстващи на тази "позиция".



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $anyElementTrue

  2. Как да форматирате данни в модел преди да ги запишете в Mongoose (ExpressJS)

  3. Случаят за хеширани индекси на MongoDB

  4. NodeJS + MongoDB:Получаване на данни от колекция с findOne ()

  5. Как да извършите групова актуализация на документи в MongoDB с Java?