èåæç´¢
èå主è¦ç¨æ¥å¤çæ°æ®ï¼ç»è®¡å¹³åå¼ï¼æ±åçï¼å¹¶è¿å计ç®åçæ°æ®ç»æã
æµæ°´çº¿/管éâ
è忝ä¸ä¸ªæµæ°´çº¿å¼çæ¹å¤çä½ä¸ï¼åå§ææ¡£ç»è¿å¤ä¸ªé¶æ®µçæµæ°´çº¿å¤çåï¼å¾å°è½¬æ¢åçèåç»æã
å设已æä¸ä¸ªéå booksï¼å ¶ä¸å å«ä»¥ä¸æ ¼å¼è®°å½ï¼
[
{
"_id": "xxx",
"category": "Novel",
"name": "The Catcher in the Rye",
"onSale": true,
"sales": 80
}
]
èå示ä¾å¦ä¸:
// äºå½æ°ç«¯ç¤ºä¾
const cloudbase = require("@cloudbase/node-sdk");
const app = cloudbase.init();
const db = app.database();
const $ = db.command.aggregate;
exports.main = async (event, context) => {
const res = await db
.collection("books")
.aggregate()
.match({
onSale: true, // æ¯å¦æ£å¨åºå®
})
.group({
// æ category åæ®µåç»
_id: "$category",
// 让è¾åºçæ¯ç»è®°å½æä¸ä¸ª avgSales åæ®µï¼å
¶å¼æ¯ç»å
ææè®°å½ç sales åæ®µçå¹³åå¼
avgSales: $.avg("$sales"),
})
.end();
return {
res,
};
};
第ä¸é¶æ®µï¼match é¶æ®µè¿æ»¤åºäºéåä¸çææ¡£æ°æ®(onSale:true 表示æ¾åºæ£å¨åºå®ç书ç±)å¹¶ä¼ ç»ä¸ä¸ä¸ªé¶æ®µã
第äºé¶æ®µï¼group é¶æ®µåºäº category åæ®µè¿è¡åç»ï¼å¹¶ç»è®¡åºæ¯ç»ä¸ææè®°å½ç sales åæ®µå¹³åå¼ã
API åæä½ç¬¦â
åè Node SDK API ææ¡£ï¼ä¸è§ææçèåé¶æ®µ API å æä½ç¬¦ã
ä¼åæ§è¡â
å©ç¨ç´¢å¼â
match å sort 妿æ¯å¨æµæ°´çº¿çå¼å¤´çè¯æ¯å¯ä»¥å©ç¨ç´¢å¼çãgeoNear ä¹å¯ä»¥å©ç¨å°çä½ç½®ç´¢å¼ï¼ä½è¦æ³¨æçæ¯ï¼geoNear å¿ é¡»æ¯æµæ°´çº¿ç第ä¸ä¸ªé¶æ®µã
å°½æ©ç¼©å°æ°æ®éâ
å¨ä¸éè¦éåçå ¨éæ åµä¸ï¼åºè¯¥å°½æ©çéè¿ matchãlimit å skip 缩å°è¦å¤ççè®°å½æ°éã
注æäºé¡¹â
é¤äº match é¶æ®µï¼å¨å个èåé¶æ®µä¸ä¼ å ¥ç对象ä¸ï¼å¯ä½¿ç¨çæä½ç¬¦é½æ¯èåæä½ç¬¦ï¼éè¦ç¹å«æ³¨æçæ¯ï¼match è¿è¡çæ¯æ¥è¯¢å¹é ï¼å æ¤è¯æ³åæ®éæ¥è¯¢ where çè¯æ³ï¼ç¨çæ¯æ®éæ¥è¯¢æä½ç¬¦ã
FAQâ
Sort exceeded memory limit of 104857600 bytesâ
{"Error":{"Code":"FailedOperation","Message":"(Location16820) Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in."},"RequestId":"1728459320973_0.7685102267589137_33591173-19270342dd4_15"}
ææ¡£åæ°æ®åº sort æåºå åæº¢åºé®é¢ã
è§£å³æ¹æ¡â
- åçä½¿ç¨ projectï¼ä½¿ç¨æ´å°çæ°æ®éè¿è¡æåºã
- åçä½¿ç¨ sortï¼åå°æåºåæ®µçæ°éã
- åçä½¿ç¨ matchï¼ å°½éå¨ match åï¼æè æåè¿è¡ sortã
- åç使ç¨ç´¢å¼ï¼ä½¿ç¨ç´¢å¼è¿è¡æåºï¼å¦æå¯è½çè¯ï¼ã