MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Изчислете точково произведение между два масива с MongoDB Aggregate

Ако приемем, че и двата масива имат еднаква дължина, можете да използвате агрегирането по-долу:

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Мангуста - причинена от ::11000 E11000 дублиран ключов индекс на грешка?

  2. Правилно обработване на асинхронни Mongo действия в Node Promise

  3. Spring data mongodb дизайн на приложение и агрегиране на данни

  4. Не мога да накарам mongoose-unique-validator да работи

  5. Mongoose:CastError:Прехвърлянето към ObjectId е неуспешно за стойност „me“ на пътя „_id“