MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Oblicz iloczyn skalarny między dwiema tablicami za pomocą MongoDB Aggregate

Zakładając, że obie tablice mają tę samą długość, możesz użyć poniższej agregacji:

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

$range służy do wygenerowania tablicy składającej się z 4 elementów w tym przypadku (0,1,2,3) a te są używane jako indeksy dla $arrayElemAt operator. $reduce po prostu sumuje wszystkie produkty dla poszczególnych indeksów, zwracając wartość skalarną. Istnieją dwie specjalne zmienne używane w $reduce :$$value reprezentuje sumę, podczas gdy $$this reprezentuje indeks wygenerowany przez $range




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoException:klucze o zerowej długości są niedozwolone, czy użyłeś $ z podwójnymi cudzysłowami?

  2. Czym różnią się plik dziennika MongoDB i oplog?

  3. Czynniki operacyjne do rozważenia podczas modelowania danych MongoDB

  4. Konwersja DBObject do Java Object podczas pobierania wartości z MongoDB

  5. Jak wyszukiwać w tablicy tablicy obiektów w mongodb