MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Hinzufügen von Scores zur MongoDB-Aggregation mit $switch

Es sieht so aus:{"name": "sitt"} wird immer zu true aufgelöst . Sie sollten stattdessen **$eq** verwenden Betreiber, damit es funktioniert.

Beachten Sie auch, dass Ihr **$match** stage kann stark vereinfacht werden, da Ihre 3 Ausdrücke äquivalent sind zu

{$match: {name: /sitt/i}}

Ihre Abfrage wird also:

db.getCollection('tags').aggregate([
   {
      $match:{
         name:/sitt/i
      }
   },
   {
      $project:{
         name: 1,
         score:{
            $switch:{
               branches:[
                  {
                     case:{
                        $eq:[
                           "$name",
                           "sitt"
                        ]
                     },
                     then:100
                  }
               ],
               default:50
            }
         }
      }
   }
])