Dus het eerste wat je hier moet zeggen is de $elemMatch
is in uw geval niet vereist omdat u alleen wilt matchen op een enkele array-eigenschap. U gebruikt die operator wanneer u "twee of meer" eigenschappen van hetzelfde array-element nodig heeft om aan uw voorwaarden te voldoen. Anders gebruik je gewoon "puntnotatie" als standaard.
Het tweede geval hier is met $push
, waarbij die specifieke operator betekent "toevoegen" van elementen aan de array. In jouw geval wil je gewoon "updaten", dus de juiste operator hier is $set
:
Activity.update(
{ "_id": activityId, "usersActivities.userId": Meteor.userId() },
{
"$set": {
'usersActivities.$.startDate': start,
'usersActivities.$.endDate': end
}
}
)
Dus de positionele $
operator hier is wat overeenkomt met de "found index" van het array-element en laat de $set
operator om de elementen op die "positie" te "wijzigen".