sql >> Database teknologi >  >> NoSQL >> MongoDB

Meteor mongo opdaterer indlejret array

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



  1. Asynkron udførelse af redis-kommandoer

  2. grupper efter forespørgsler om meteorindsamling

  3. Hvordan sammenligner man 2 mongodb-samlinger?

  4. Konvertering af streng til dato i mongodb