sql >> Database >  >> NoSQL >> MongoDB

Mijn $or selector in een database-trigger match-expressie werkt niet op het tweede niveau van nesting bij het configureren van een database-trigger

Dus ik kon dit probleem omzeilen door de query te wijzigen om te kijken naar een veld dat tegelijkertijd wordt bijgewerkt maar niet is genest. Ik denk dat het probleem met het controleren op een genest veld is dat de ChangeEvent 's updateDescription eigenschap bevat niet het daadwerkelijke geneste object dat is gewijzigd; in plaats daarvan bevat het de puntnotatieweergave van de wijziging. Dus als je kijkt naar Update 2 in mijn bericht zie je dat updatedFields heeft deze waarde:{\"someOtherField\":310,\"message.fansNo\":1... in plaats van {\"someOtherField\":310,\"message\":{\"fansNo\":1... . Door message.fansNo . te gebruiken in de $match-query zoekt Mongo naar deze objectvorm:{\"message\":{\"fansNo\":1... , wat in dit geval niet overeenkomt. Een "echte" oplossing zou hier kunnen zijn om te ontsnappen aan de . in message.fansNo in mijn match-expressie, maar ik kon dat niet laten werken (zie deze draad ).

Dus de "oplossing" die voor mij werkte, is eigenlijk gewoon een tijdelijke oplossing die werkt voor mijn specifieke gebruik:het gebeurt zo dat someOtherField wordt altijd bijgewerkt samen met message.fansNo , en someOtherField is niet genest. Zodat ik someOtherField kan matchen zonder je zorgen te maken over nesten. In principe geeft deze match-expressie me de resultaten die ik wil:

{
  "$or": [
    {
      "updateDescription.updatedFields.someOtherField": {"$exists":true}
    },
    {
      "updateDescription.updatedFields.someOtherField":{"$exists":true}
    }
  ]
}

Ik hoop dat dit iemand anders helpt!




  1. Sla meerdere afbeeldingsbestanden op met Kartik FileInput Widget

  2. Uitzondering socket time-out in Mongo

  3. MongoConnectionException - Geen kandidaat-servers gevonden

  4. Serverbeveiliging parseren