したがって、ここで最初に言うことは、 $elemMatch
です。 単一の配列プロパティでのみ一致させたいので、あなたの場合は必要ありません。条件に一致させるために同じ配列要素からの「2つ以上の」プロパティが必要な場合は、この演算子を使用します。それ以外の場合は、「ドット表記」を標準として使用します。
ここでの2番目のケースは、 $push
の場合です。 、ここで、その特定の演算子は、要素を配列に「追加」することを意味します。あなたの場合、あなたはただ「更新」したいので、ここでの正しい演算子は $set
です :
Activity.update(
{ "_id": activityId, "usersActivities.userId": Meteor.userId() },
{
"$set": {
'usersActivities.$.startDate': start,
'usersActivities.$.endDate': end
}
}
)
したがって、位置の$
ここでの演算子は、配列要素の「見つかったインデックス」に一致し、$set
を許可するものです。 その「位置」で一致する要素を「変更」する演算子。