यह मानते हुए कि दोनों सरणियों की लंबाई समान है, आप नीचे एकत्रीकरण का उपयोग कर सकते हैं:
db.collection.aggregate([
{
$project: {
dotProduct: {
$reduce: {
input: { $range: [ 0, { $size: "$source" }] },
initialValue: 0,
in: { $add: [ "$$value", { $multiply: [ { $arrayElemAt: [ "$source", "$$this" ] }, { $arrayElemAt: [ "$sink", "$$this" ] } ] } ] }
}
}
}
}
])
$range
इस मामले में 4 तत्वों की एक सरणी उत्पन्न करने के लिए प्रयोग किया जाता है (0,1,2,3)
और उनका उपयोग $arrayElemAt
के लिए अनुक्रमणिका के रूप में किया जाता है ऑपरेटर। $reduce
स्केलर वैल्यू लौटाने वाले विशेष इंडेक्स के लिए सभी उत्पादों को सरलता से बताता है। $reduce
. में दो विशेष वेरिएबल का उपयोग किया जाता है :$$value
$$this
. के दौरान योग का प्रतिनिधित्व करता है $range
. द्वारा उत्पन्न सूचकांक का प्रतिनिधित्व करता है