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

Tilføjelse af scores til MongoDB-aggregering ved hjælp af $switch

Det ser ud som {"name": "sitt"} løser sig altid til sand . Du bør i stedet bruge **$eq** operatør for at få det til at fungere.

Bemærk også, at din **$match** fase kan forenkles meget, da dine 3 udtryk svarer til

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

så din forespørgsel bliver:

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


  1. Mongoose:CastError:Cast to ObjectId mislykkedes for værdien "mig" ved stien "_id"

  2. Azure Redis Cache - Flere fejl TimeoutException:Timeout udfører GET {key}

  3. Gør noget, hvis der ikke findes noget med .find() mongoose

  4. Mongoose - Omdefinerer skemastruktur