Så den første ting at sige her er $elemMatch
er ikke påkrævet i dit tilfælde, da du kun ønsker at matche på en enkelt array-ejendom. Du bruger denne operator, når du har brug for "to eller flere" egenskaber fra det samme array-element for at matche dine betingelser. Ellers bruger du bare "dot notation" som standard.
Det andet tilfælde her er med $push
, hvor den pågældende operator betyder at "føje" elementer til arrayet. I dit tilfælde vil du bare "opdatere", så den korrekte operator her er $set
:
Activity.update(
{ "_id": activityId, "usersActivities.userId": Meteor.userId() },
{
"$set": {
'usersActivities.$.startDate': start,
'usersActivities.$.endDate': end
}
}
)
Så den positionelle $
operator her er det, der matcher "fundet indeks" fra array-elementet og tillader $set
operatør for at "ændre" de elementer, der matches på den "position".