如何在MongoDB中执行存储过程/函数
我是mongo的新手,我可以从aggregate创建它,但我想使用这两个表创建一个函数或某种存储过程,它应该包含Customer Customer\u NO、FNAME、LNAME、sum(SHIPPING\u CHARGE)、sum(TAX\u AMT)、sum(TOTAL\u AMT)、count(*) 为了了解这一点,我想将下面的存储过程应用到MongoDB中,并在其中添加一些列如何在MongoDB中执行存储过程/函数,mongodb,function,stored-procedures,Mongodb,Function,Stored Procedures,我是mongo的新手,我可以从aggregate创建它,但我想使用这两个表创建一个函数或某种存储过程,它应该包含Customer Customer\u NO、FNAME、LNAME、sum(SHIPPING\u CHARGE)、sum(TAX\u AMT)、sum(TOTAL\u AMT)、count(*) 为了了解这一点,我想将下面的存储过程应用到MongoDB中,并在其中添加一些列 SET SERVEROUTPUT ON CREATE OR REPLACE PROCEDURE GET_NUM
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE GET_NUM_ORDERS(CUST_NO IN OES2.CUSTOMER.CUSTOMER_NO%TYPE, TOTAL_ORDERS OUT NUMBER) IS
CURSOR CURS IS SELECT COUNT(*) FROM OES2.ORDERS WHERE CUSTOMER_NO = CUST_NO;
BEGIN
OPEN CURS;
FETCH CURS INTO TOTAL_ORDERS;
CLOSE CURS;
END GET_NUM_ORDERS;
/
DECLARE
TOTAL_ORDERS NUMBER;
BEGIN
FOR A IN (SELECT CUSTOMER.CUSTOMER_NO, FNAME, LNAME FROM OES2.CUSTOMER)
LOOP
GET_NUM_ORDERS(A.CUSTOMER_NO, TOTAL_ORDERS);
DBMS_OUTPUT.PUT_LINE(A.CUSTOMER_NO || ' ' || A.FNAME || ' ' || A.LNAME || ' ' || TOTAL_ORDERS);
END LOOP;
END
这是我想要适应MOngoDB的SQL查询
SELECT Customer.CUSTOMER_NO,Customer.LNAME,Customer.FNAME, Customer.FNAME, sum([Order].SHIPPING_CHARGE),
sum([Order].TAX_AMT),sum([Order].TOTAL_AMT), count(*)
FROM Customer inner join [Order]
on Customer.CUSTOMER_NO = [Order].CUSTOMER_NO
GROUP BY Customer.CUSTOMER_NO,Customer.LNAME,Customer.FNAME, Customer.FNAME
ORDER BY Customer.CUSTOMER_NO;
db.Customer.insertMany([
{"CUSTOMER_NO": "1099", "LNAME": "Jake", "FNAME": "Roerig", "STREET": "16 Skyline Drive", "CITY": "Mankato", "STATE": "MN", "ZIP": "56001", "REGION_NO": "5", "TEL_NO": "507-344-4567", "BALANCE": "1000", "CREDIT_LIMIT": "", "BRANCH_NO": "100"},
{"CUSTOMER_NO": "1100", "LNAME": "Maria", "FNAME": "Jensen", "STREET": "10 State", "CITY": "New Ulm", "STATE": "MN", "ZIP": "56023", "REGION_NO": "5", "TEL_NO": "507", "BALANCE": "2500", "CREDIT_LIMIT": "5000", "BRANCH_NO": "100"},
{"CUSTOMER_NO": "1023", "LNAME": "Doering", "FNAME": "Al", "STREET": "1515 Market Street 13th", "CITY": "LITTLE ROCK", "STATE": "AR", "ZIP": "72201", "REGION_NO": "5", "TEL_NO": "", "BALANCE": "", "CREDIT_LIMIT": "", "BRANCH_NO": "100"},
{"CUSTOMER_NO": "1064", "LNAME": "Jenkins", "FNAME": "Donn", "STREET": "11160 Veirs Mill Road", "CITY": "MADISON", "STATE": "WI", "ZIP": "53703", "REGION_NO": "5", "TEL_NO": "", "BALANCE": "", "CREDIT_LIMIT": "", "BRANCH_NO": "100"},
{"CUSTOMER_NO": "1068", "LNAME": "Halle", "FNAME": "Edward", "STREET": "1250 Harrinton Ave.", "CITY": "BISMARCK", "STATE": "ND", "ZIP": "58501", "REGION_NO": "5", "TEL_NO": "", "BALANCE": "", "CREDIT_LIMIT": "", "BRANCH_NO": "100"},
{"CUSTOMER_NO": "1072", "LNAME": "Bond", "FNAME": "Michael", "STREET": "13 Federal 704", "CITY": "MADISON", "STATE": "WI", "ZIP": "53703", "REGION_NO": "5", "TEL_NO": "", "BALANCE": "", "CREDIT_LIMIT": "", "BRANCH_NO": "100"},
{"CUSTOMER_NO": "1076", "LNAME": "Thomas", "FNAME": "Catherine", "STREET": "4590 Blake Street", "CITY": "JACKSON", "STATE": "MS", "ZIP": "39201", "REGION_NO": "5", "TEL_NO": "", "BALANCE": "", "CREDIT_LIMIT": "", "BRANCH_NO": "100"},
{"CUSTOMER_NO": "1001", "LNAME": "Case", "FNAME": "Steve", "STREET": "101 michigan", "CITY": "New Ulm", "STATE": "MN", "ZIP": "56023", "REGION_NO": "5", "TEL_NO": "507-387-1234", "BALANCE": "2500", "CREDIT_LIMIT": "5000", "BRANCH_NO": "101"}])
db.Order.insertMany([
{"ORDER_NO": "1193", "ORDER_DATE": "10-MAY-02", "SHIP_DATE": "15-MAY-02", "SHIPPING_METHOD": "1-day", "TAX_STATUS": "n", "SUBTOTAL": "17800", "TAX_AMT": "0", "SHIPPING_CHARGE": "2670", "TOTAL_AMT": "20470", "CUSTOMER_NO": "1099", "EMPLOYEE_NO": "1042", "BRANCH_NO": "108"},
{"ORDER_NO": "1194", "ORDER_DATE": "11-MAY-02", "SHIP_DATE": "16-MAY-02", "SHIPPING_METHOD": "1day-air", "TAX_STATUS": "y", "SUBTOTAL": "64870", "TAX_AMT": "726.48840641", "SHIPPING_CHARGE": "9730.5", "TOTAL_AMT": "75326.98840641", "CUSTOMER_NO": "1100", "EMPLOYEE_NO": "1042", "BRANCH_NO": "108"},
{"ORDER_NO": "1196", "ORDER_DATE": "13-MAY-02", "SHIP_DATE": "20-MAY-02", "SHIPPING_METHOD": "Ground", "TAX_STATUS": "n", "SUBTOTAL": "483605", "TAX_AMT": "0", "SHIPPING_CHARGE": "24180.25", "TOTAL_AMT": "507785.25", "CUSTOMER_NO": "1099", "EMPLOYEE_NO": "1047", "BRANCH_NO": "100"},
{"ORDER_NO": "1197", "ORDER_DATE": "14-MAY-02", "SHIP_DATE": "19-MAY-02", "SHIPPING_METHOD": "1-day", "TAX_STATUS": "n", "SUBTOTAL": "344720", "TAX_AMT": "0", "SHIPPING_CHARGE": "51708", "TOTAL_AMT": "396428", "CUSTOMER_NO": "1023", "EMPLOYEE_NO": "1100", "BRANCH_NO": "100"},
{"ORDER_NO": "1199", "ORDER_DATE": "16-MAY-02", "SHIP_DATE": "21-MAY-02", "SHIPPING_METHOD": "Ground", "TAX_STATUS": "y", "SUBTOTAL": "136300", "TAX_AMT": "7376.2678618", "SHIPPING_CHARGE": "6815", "TOTAL_AMT": "150491.2678618", "CUSTOMER_NO": "1064", "EMPLOYEE_NO": "1047", "BRANCH_NO": "108"},
{"ORDER_NO": "1200", "ORDER_DATE": "17-MAY-02", "SHIP_DATE": "22-MAY-02", "SHIPPING_METHOD": "1-day", "TAX_STATUS": "y", "SUBTOTAL": "590070", "TAX_AMT": "30568.90442892", "SHIPPING_CHARGE": "88510.5", "TOTAL_AMT": "709149.40442892", "CUSTOMER_NO": "1064", "EMPLOYEE_NO": "1047", "BRANCH_NO": "100"},
{"ORDER_NO": "1201", "ORDER_DATE": "18-MAY-02", "SHIP_DATE": "23-MAY-02", "SHIPPING_METHOD": "Ground", "TAX_STATUS": "y", "SUBTOTAL": "13200", "TAX_AMT": "714.3560952", "SHIPPING_CHARGE": "660", "TOTAL_AMT": "14574.3560952", "CUSTOMER_NO": "1099", "EMPLOYEE_NO": "1047", "BRANCH_NO": "100"},
{"ORDER_NO": "1202", "ORDER_DATE": "19-MAY-02", "SHIP_DATE": "24-MAY-02", "SHIPPING_METHOD": "2-day", "TAX_STATUS": "n", "SUBTOTAL": "6725", "TAX_AMT": "0", "SHIPPING_CHARGE": "672.5", "TOTAL_AMT": "7397.5", "CUSTOMER_NO": "1076", "EMPLOYEE_NO": "1023", "BRANCH_NO": "108"}])
这在MongoDB中可能吗
如有任何帮助,我们将不胜感激