sql >> Database >  >> NoSQL >> MongoDB

Bereken Dot Product tussen twee arrays met MongoDB Aggregate

Ervan uitgaande dat beide arrays dezelfde lengte hebben, kunt u onderstaande aggregatie gebruiken:

db.collection.aggregate([
    {
        $project: {
            dotProduct: {
                $reduce: {
                    input: { $range: [ 0, { $size: "$source" }] },
                    initialValue: 0,
                    in: { $add: [ "$$value", { $multiply: [ { $arrayElemAt: [ "$source", "$$this" ] }, { $arrayElemAt: [ "$sink", "$$this" ] } ] } ] }
                }
            }
        }
    }    
])

$range wordt gebruikt om een ​​array van 4 elementen te genereren, in dit geval (0,1,2,3) en die worden gebruikt als indexen voor $arrayElemAt exploitant. $reduce somt eenvoudig alle producten voor bepaalde indexen op en geeft de scalaire waarde terug. Er worden twee speciale variabelen gebruikt in $reduce :$$value staat voor som terwijl $$this staat voor index gegenereerd door $range




  1. hoe een dataframe in mongodb op te slaan met pyspark?

  2. Mongodb groeperen op veld met $substr

  3. Records in een verzameling partitioneren in MongoDB

  4. Hoe geneste opzoekarray in mangoest te aggregeren?