Correspondance entre MONGODB et les opérations d'agrégation sql

Termes, fonctions et concepts SQL

                                      Opérateurs d'agrégation MongoDB

                               $ match

PAR GROUPE

                               $groupe

AYANT

                               $ match

SÉLECTIONNER

                               $projet

COMMANDÉ PAR

                                $sort

LIMITE

                                limite $

SOMME()

                                 $ somme

COMPTER()

                                 $ somme

rejoindre

Pas d'opérateur correspondant direct ; cependant , l'  opérateur $unwind permet une fonctionnalité quelque peu similaire, mais avec des champs intégrés dans le document.

Exemple :
[td]

Exemple SQL

Exemple MongoDB

Description

SELECT COUNT ( *AS countFROM  commandes

db.orders.aggregate( [    { $group : { _id : null,                count : { $sum : 1 } } } ] )

Compter tous les enregistrements des commandes

SELECT SUM (prix)  AS  total FROM  commandes

db.orders.aggregate( [    { $group : { _id : null,                total : { $sum : "$price" } } } ] )

Additionnez le champ prix des commandes, c'est très utile, lisez la description officielle, il est dit que _ID est requis, mais je ne m'attendais pas à ce qu'il soit NULL,

SELECT  id_client,        SUM (prix)  AS total FROM  commandes GROUP BY  id_client

db.orders.aggregate( [    { $group : { _id : "$cust_id",                total : { $sum : "$price" } } } ] )

Pour chaque uniquecust_id, additionnez le champ de prix.

SELECT  id_client,        SUM (prix)  AS total FROM  commandes GROUP BY id_client ORDER BY  total

db.orders.aggregate( [    { $group : { _id : "$cust_id",                total : { $sum : "$price" } } },    { $sort : { total : 1 } } ] )

Pour chaque uniquecust_id, additionnez le champ de prix, résultats triés par somme.

SELECT  id_client, ord_date,       SUM (prix)  AS  total FROM  commandes GROUPBY  id_client, ord_date

db.orders.aggregate( [    { $group : { _id : { cust_id : "$cust_id",                       ord_date : "$ord_date" },                total : { $sum : "$price" } } } ] )

Pour chaque uniquecust_id, ord_dategrouping, additionnez le champ de prix.

SELECT  id_client,  nombre ( * ) FROM commandes GROUP BY  id_client HAVING nombre ( * ) >  1

db.orders.aggregate( [    { $group : { _id : "$cust_id",                count : { $sum : 1 } } },    { $match : { count : { $gt : 1 } } } ] )

Pour cust_idavec plusieurs enregistrements, renvoyez lecust_id et le nombre d'enregistrements correspondant.

SELECT cust_id,       ord_date,      SUM(price) AS totalFROM ordersGROUPBY cust_id, ord_dateHAVING total > 250

db.orders.aggregate( [   { $group: { _id: { cust_id: "$cust_id",                      ord_date: "$ord_date" },               total: { $sum: "$price" } } },   { $match: { total: { $gt: 250 } } }] )

For each uniquecust_id,ord_dategrouping, sum the pricefield and return only where the sum is greater than 250.

SELECT cust_id,       SUM(price) astotalFROM ordersWHERE status ='A'GROUP BY cust_id

db.orders.aggregate( [   { $match: { status: 'A' } },   { $group: { _id: "$cust_id",               total: { $sum: "$price" } } }] )

For each uniquecust_id with status A, sum the pricefield.

SELECT cust_id,       SUM(price) astotalFROM ordersWHERE status ='A'GROUP BY cust_idHAVING total > 250

db.orders.aggregate( [   { $match: { status: 'A' } },   { $group: { _id: "$cust_id",               total: { $sum: "$price" } } },   { $match: { total: { $gt: 250 } } }] )

For each uniquecust_id with status A, sum the pricefield and return only where the sum is greater than 250.

SELECT cust_id,       SUM(li.qty) asqtyFROM orders o,     order_lineitem liWHERE li.order_id = o.idGROUP BYcust_id

db.orders.aggregate( [   { $unwind: "$items" },   { $group: { _id: "$cust_id",               qty: { $sum: "$items.qty" } } }] )

For each uniquecust_id, sum the corresponding line item qtyfields associated with the orders.

SELECT COUNT(*)FROM (SELECT cust_id, ord_date      FROM orders      GROUP BYcust_id, ord_date) as DerivedTable

db.orders.aggregate( [   { $group: { _id: { cust_id: "$cust_id",                      ord_date: "$ord_date" } } },   { $group: { _id: null, count: { $sum: 1 } } }] )

Je suppose que tu aimes

Origine blog.csdn.net/qsir08/article/details/78213680
conseillé
Classement