sql >> Databasteknik >  >> NoSQL >> MongoDB

Meteor mongo uppdaterar kapslad array

Så det första att säga här är $elemMatch krävs inte i ditt fall eftersom du bara vill matcha på en enstaka array-egenskap. Du använder den operatorn när du behöver "två eller fler" egenskaper från samma arrayelement för att matcha dina villkor. Annars använder du bara "dot notation" som standard.

Det andra fallet här är med $push , där den specifika operatorn betyder att "lägga till" element till arrayen. I ditt fall vill du bara "uppdatera" så att rätt operator här är $set :

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

Så den positionella $ operatorn här är vad som matchar "found index" från arrayelementet och tillåter $set operatör för att "ändra" de element som matchas vid den "positionen".



  1. StackExchange.Redis:Batchåtkomst för flera hash

  2. Startar mongod fork, FEL:underordnad process misslyckades, avslutades med fel nummer 1

  3. mongoimport välja fälttyp

  4. Hur söker man efter nycklar med ett värde? Få till exempel alla NYCKLAR där värdet är något värde