sql >> Database >  >> NoSQL >> MongoDB

Meteor mongo werkt geneste array bij

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".



  1. Verkort de uitvoeringstijd van taken van sidekiq

  2. Flask:doorgeven van achtergrond werknemer baan (rq, redis)

  3. 3 manieren om een ​​index te maken in MongoDB

  4. MongoDB:hoe de datum te ontleden in 3.6 mongoDb-versie?