db.collection.aggregate()
åšæ¬é¡µé¢
db.collection.
aggregate
(管éïŒé项)- 计ç®éåäžæ°æ®çèååŒæè§åŸã
åæ° | ç±»å | æè¿° |
---|---|---|
pipeline | array | äžç³»åæ°æ®èåæäœæé¶æ®µãæå
³è¯Šç»ä¿¡æ¯ïŒè¯·åé
èå管éè¿ç®ç¬Šã åš version 2.6 äžæŽæ¹ïŒè¯¥æ¹æ³ä»ç¶å¯ä»¥æ¥å管éé¶æ®µäœäžºåç¬ç arguments èäžæ¯ array äžçå
çŽ ;äœæ¯ïŒåŠææªå° pipeline æå®äžº arrayïŒåæ æ³æå®options åæ°ã |
options | document | å¯éçã aggregate()äŒ éç»aggregateåœä»€çå
¶ä»é项ã version 2.6 äžçæ°å
容ïŒä»
åœæšå° pipeline æå®äžº array æ¶æå¯çšã |
options
ææ¡£å¯ä»¥å
å«ä»¥äžå段ååŒïŒå段 | ç±»å | æè¿° |
---|---|---|
explain | boolean | å¯éçãæå® return æå
³ç®¡éå€ççä¿¡æ¯ãæå
³ exampleïŒè¯·åè§è¿åæå
³èå管éæäœçä¿¡æ¯ã version 2.6 äžçæ°å
容ã åšå€ææ¡£äº€æäžäžå¯çšã |
allowDiskUse | boolean | å¯éçãå
讞åå
¥äžŽæ¶æä»¶ãè®Ÿçœ®äžºæ¶ true ïŒå€§å€æ°èåæäœå¯ä»¥å°æ°æ®åå
¥_tmp ç®åœäžç dbPath åç®åœïŒäœä»¥äžæ
åµé€å€ïŒ $graphLookup ]é¶æ®µ $addToSet 该$group é¶æ®µäžäœ¿çšç环å åšè¡šèŸŸåŒ ïŒä»4.2.3ã4.0.14ã3.6.17çæ¬åŒå§ïŒ $push 该$group é¶æ®µäžäœ¿çšç环å åšè¡šèŸŸåŒ ïŒä»4.2.3ã4.0.14ã3.6.17çæ¬åŒå§ïŒ æå
³allowDiskUseç瀺äŸïŒè¯·åè§ äœ¿çšå€éšæåºæ§è¡å€§åæåºæäœã ä»MongoDB 4.2åŒå§ïŒäºä»¶æ¢æ¥åšæ¥å¿æ¶æ¯åè¯ææ¥å¿æ¶æ¯å
æ¬äžäžªusedDisk æç€ºç¬ŠïŒæç€ºæ¯åŠæä»»äœèåé¶æ®µç±äºå
åéå¶èå°æ°æ®åå
¥äžŽæ¶æä»¶ã |
cursor | document | å¯éçãæå®æžžæ çåå§æ¹å€ç倧å°ã cursor åæ®µç value æ¯äžäžªåžŠæbatchSize åæ®µçææ¡£ãæå
³è¯æ³å exampleïŒè¯·åé
æå®åå§æ¹é倧å°ã version 2.6 äžçæ°å
容ã |
maxTimeMS | non-negative integer | å¯éçãæå®å€çæžžæ æäœç time éå¶(以毫ç§äžºåäœ)ãåŠææ²¡æäžº maxTimeMS æå® valueïŒåæäœäžäŒ timeoutã 0 ç value æŸåŒæå®é»è®€çæ çè¡äžºã MongoDB 䜿çšäždb.killOp()çžåçæºå¶ç»æ¢è¶
åºå
¶åé
ç time éå¶çæäœã MongoDB ä»
åšå
¶æå®çäžæç¹ä¹äžå€ç»æ¢æäœã |
bypassDocumentValidation | boolean | å¯éçãä»
åšæå®$outæ$merge]èåé¶æ®µæ¶å¯çšã åšæäœæéŽå¯çšdb.collection.aggregate以ç»è¿ææ¡£éªè¯ãè¿äœ¿æšå¯ä»¥æå
¥äžç¬Šåéªè¯èŠæ±çææ¡£ã version 3.2 äžçæ°å
容ã |
readConcern | document | å¯éçãæå®è¯»å
³æ³šã readConcern é项å
·æä»¥äžè¯æ³ïŒ åš version 3.6 äžæŽæ¹ã readConcern: { level: <value> } å¯èœçé
读å
³æ³šçº§å«äžºïŒ âlocalâãè¿æ¯ level çé»è®€è¯»åé®é¢ã âavailableâãåœé
读æäœå Causally Consistent Sessionsåâlevelâæªæå®æ¶ïŒè¿æ¯å¯¹äºçº§ç读åçé»è®€åŒãæ¥è¯¢è¿ åå®äŸçææ°æ°æ®ã âmanorityâãéçšäºäœ¿çšWiredTiger ååšåŒæç坿¬éã âlinerizableâãä»
éçšäºäž»ç读åæäœã æå
³è¯»åå
³æ³šçº§å«çæŽå€ä¿¡æ¯ïŒè¯·åé
读å
³æ³šçº§å«ã ä»MongoDB 4.2åŒå§ïŒè¯¥$out é¶æ®µäžèœäžè¯»åå
³æ³šäžèµ·äœ¿çš"linearizable" ãä¹å°±æ¯è¯ŽïŒåŠææšäžºæå®äº"linearizable" 读åå
³æ³š db.collection.aggregate() ïŒåäžèœå°$out é¶æ®µå
æ¬ åšç®¡éäžã 该$merge é¶æ®µäžèœäžå·²å
³æ³šçå
容äžèµ·äœ¿çš"linearizable" ãä¹å°±æ¯è¯ŽïŒåŠææšäžºæå®äº "linearizable" 读åå
³æ³š db.collection.aggregate() ïŒåäžèœå°$merge é¶æ®µå
æ¬ åšç®¡éäžã |
collation | document | å¯éçã æå®èŠçšäºæäœçæŽçã æŽçå
è®žçšæ·äžº string æ¯èŸæå® language-specific è§åïŒäŸåŠåæ¯åé鳿 è®°çè§åã æåºè§åé项å
·æä»¥äžè¯æ³ïŒ æåºè§åïŒ{ localeïŒ<string>ïŒ caseLevelïŒ<boolean>ïŒ caseFirstïŒ<string>ïŒ strengthïŒ<int>ïŒ numericOrderingïŒ<boolean>ïŒ alternateïŒ<string>ïŒ maxVariableïŒ<string>ïŒ backwards ïŒ<boolean> } æå®æåºè§åæ¶ïŒ locale åæ®µæ¯å¿
å¡«åæ®µ;ææå
¶ä»æ ¡å¯¹åæ®µéœæ¯å¯éçãæå
³å段ç诎æïŒè¯·åé
æŽçæä»¶ã åŠææªæå®æåºè§åäœéåå
·æé»è®€æåºè§å(请åé
db.createCollection()ïŒåæäœå°äœ¿çšäžºéåæå®çæåºè§åã åŠææ²¡æäžºéåææäœæå®æåºè§åïŒMongoDB 䜿çšå
åçæ¬äžçšäº string æ¯èŸçç®åäºè¿å¶æ¯èŸã æšæ æ³äžºæäœæå®å€äžªæåºè§åãå¯¹äº exampleïŒæšäžèœäžºæ¯äžªå段æå®äžåçæåºè§åïŒæè
åŠæäœ¿çšæåºæ§è¡æ¥æŸ ïŒåäžèœå¯¹æ¥æŸäœ¿çšäžäžªæåºè§åïŒè对æåºäœ¿çšåŠäžäžªæåºè§åã version 3.4 äžçæ°å
容ã |
hint | string or document | å¯éçãçšäºèåç玢åŒã玢åŒäœäºåå§ collection/viewïŒèå䞺 runã éè¿çŽ¢åŒ name æçŽ¢åŒè§èææ¡£æå®çŽ¢åŒã 泚æ hint äžéçšäº$lookupå$graphLookupé¶æ®µã version 3.6 äžçæ°å
容ã |
comment | string | å¯éçãçšæ·å¯ä»¥æå®ä»»æ string 以垮å©éè¿æ°æ®åºæ¢æ¥åšïŒcurrentOp 忥å¿è·èžªæäœã version 3.6 äžçæ°å
容ã |
writeConcern | document | å¯éçã衚瀺 äžor é¶æ®µäžèµ·äœ¿çšç[åå
³æ³šç¹](çææ¡£ã $out $merge 応ç¥å¯¹$out or $merge é¶æ®µäœ¿çšé»è®€çåå
³æ³šã |
è¿ååŒïŒ | äžäžªæžžæ éè¿èå管éæäœçæåé¶æ®µäº§ççæä»¶ïŒæè
å
æ¬ explain éé¡¹ïŒæäŸäºèåæäœçå€çç»èçæä»¶ã åŠæç®¡éå
å«$out è¿ç®ç¬ŠïŒå aggregate() è¿åäžäžªç©ºæžžæ ã请åé
$out 以è·åæŽå€ä¿¡æ¯ã |
åŠæåçé误ïŒaggregate()åž®å©çšåºå°æåº exceptionã
åšmongo shell äžïŒåŠæä»db.collection.aggregate()è¿åçæžžæ æªäœ¿çš
var
å
³é®ååé
ç»åéïŒåmongo shell äŒèªåšè¿ä»£å
æ 20 次ã请åé
åš mongo Shell äžè¿ä»£äžäžª Cursor以å€çmongo shell äžçæžžæ ãä»èåè¿åçæžžæ ä»
æ¯æå¯¹å·²è¯äŒ°çæžžæ (å·²æ£çŽ¢å
¶ç¬¬äžæ¹çïŒå³ïŒæžžæ )è¿è¡æäœçæžžæ æ¹æ³ïŒäŸåŠä»¥äžæ¹æ³ïŒ
cursor.hasNext() cursor.next() cursor.toArray() cursor.forEach() | cursor.map() cursor.objsLeftInBatch() cursor.itcount() cursor.pretty() |
ä¹ å¯ä»¥ççæå ³æŽå€ä¿¡æ¯ïŒè¯·åé èå管éïŒèååèïŒèå管ééå¶åèåã
çæ¬4.0äžçæ°åèœã
对äºåšäŒè¯å
åå»ºçæžžæ ïŒäžèœåš
getMore
äŒè¯å€è°çš ãåæ ·ïŒå¯¹äºåšäŒè¯å€éšåå»ºçæžžæ ïŒäžèœåš
getMore
äŒè¯å
éšè°çš ãä»MongoDB 3.6åŒå§ïŒMongoDB驱åšçšåºå
mongo
shellçšåºå°æææäœäžæå¡åšäŒè¯çžå
³èïŒäœæªç¡®è®€çåæäœé€å€ãå¯¹äºæªäžäŒè¯æç¡®å
³èçæäœïŒå³äœ¿çšMongo.startSession()
ïŒïŒMongoDB驱åšçšåºåmongo
shellçšåºäŒå建äžäžªéåŒäŒè¯å¹¶å°å
¶äžè¯¥æäœçžå
³èãåŠæäŒè¯ç©ºé²æ¶éŽè¶
è¿30åéïŒåMongoDBæå¡åšäŒå°äŒè¯æ è®°äžºå·²è¿æïŒå¹¶å¯ä»¥éæ¶å
³éå®ãåœMongoDBæå¡åšå
³éäŒè¯æ¶ïŒå®è¿äŒç»æ¢æææ£åšè¿è¡çæäœå¹¶æåŒäžè¯¥äŒè¯å
³èçæžžæ ãè¿å
æ¬é
眮äº30åé
noCursorTimeout
æmaxTimeMS
30åé以äžçå
æ ã对äºè¿åæžžæ çæäœïŒåŠææžžæ å¯èœé²çœ®äº30åé以äžïŒè¯·åšæŸåŒäŒè¯äžäœ¿çšååºæäœïŒ
Session.startSession()
并䜿çšrefreshSessions
åœä»€å®æå·æ°è¯¥äŒè¯ã请åé
以è·åæŽå€ä¿¡æ¯ãSession Idle Timeout
db.collection.aggregate()
å¯ä»¥åšå€ææ¡£äºå¡äžäœ¿çšãäœæ¯ïŒäºå¡äžäžå
讞以äžé¶æ®µïŒ
$collStats
$currentOp
$indexStats
$listLocalSessions
$listSessions
$out
$merge
$planCacheStats
æšä¹äžèœæå®è¯¥
explain
é项ã- 对äºåšäºå¡å€éšåå»ºçæžžæ ïŒäžèœ
getMore
åšäºå¡å éšè°çš ã - 对äºåšäºå¡äžåå»ºçæžžæ ïŒäžèœ
getMore
åšäºå¡å€éšè°çš ã
éèŠåšå€§å€æ°æ åµäžïŒäžåææ¡£åå ¥çžæ¯ïŒå€ææ¡£äºå¡äº§ççæ§èœææ¬æŽé«ïŒå¹¶äžå€ææ¡£äºå¡çå¯çšæ§äžåºæ¿ä»£ææçæ¶æè®Ÿè®¡ãåšè®žå€æ åµäžïŒ éè§èåæ°æ®æš¡åïŒåµå ¥åŒææ¡£åæ°ç»ïŒå°ç»§ç»æ¯æšçæ°æ®åçšäŸçæäœ³éæ©ãä¹å°±æ¯è¯ŽïŒåšè®žå€æ åµäžïŒéåœå°å¯¹æ°æ®å»ºæš¡å°æå€§çšåºŠå°åå°å¯¹å€ææ¡£äº€æçéæ±ãæå ³å ¶ä»äºå¡äœ¿çšæ¹é¢ç泚æäºé¡¹ïŒäŸåŠè¿è¡æ¶éå¶åæäœæ¥å¿å€§å°éå¶ïŒïŒåŠè¯·åè§ ç产泚æäºé¡¹ã
对äº
db.collection.aggregate()
äžå
å«$out
æ$merge
é¶æ®µçæäœïŒä»MongoDB 4.2åŒå§ïŒåŠæååº
db.collection.aggregate()
æåŒè¿æ¥ç客æ·ç«¯åšæäœå®æä¹åæåŒè¿æ¥ïŒåMongoDBå°æ è®°db.collection.aggregate()
äžºç»æ¢ïŒå³åšæäœäžkillOp
ïŒã以äžç€ºäŸäœ¿çšå
å«ä»¥äžææ¡£çéå
orders
ïŒ{ _id: 1, cust_id: "abc1", ord_date: ISODate("2012-11-02T17:04:11.102Z"), status: "A", amount: 50 }
{ _id: 2, cust_id: "xyz1", ord_date: ISODate("2013-10-01T17:04:11.102Z"), status: "A", amount: 100 }
{ _id: 3, cust_id: "xyz1", ord_date: ISODate("2013-10-12T17:04:11.102Z"), status: "D", amount: 25 }
{ _id: 4, cust_id: "xyz1", ord_date: ISODate("2013-10-11T17:04:11.102Z"), status: "D", amount: 125 }
{ _id: 5, cust_id: "abc1", ord_date: ISODate("2013-11-12T17:04:11.102Z"), status: "A", amount: 25 }
以äžèåæäœéæ©ç¶æçäº
"A"
çææ¡£ïŒæcust_id
åæ®µå¯¹å¹é
ææ¡£è¿è¡åç»ïŒå¹¶ä»amount
åæ®µçæ»åè®¡ç®æ¯äžªcust_id
åæ®µçtotal
ïŒå¹¶æéåº order äžçtotal
åæ®µå¯¹ç»æè¿è¡æåºïŒdb.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])
该æäœè¿å垊æä»¥äžææ¡£çæžžæ ïŒ
{ "_id" : "xyz1", "total" : 100 }
{ "_id" : "abc1", "total" : 75 }
mongo shell èªåšè¿ä»£è¿åçå
æ 以æå°ç»æãæå
³åšmongo shell äžæåšå€çæžžæ çä¿¡æ¯ïŒè¯·åé
åš mongo Shell äžè¿ä»£äžäžª Cursorã
以äžèåæäœå°é项
explain
讟眮䞺true
以_return æå
³èåæäœçä¿¡æ¯ãdb.orders.aggregate(
[
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
],
{
explain: true
}
)
该æäœè¿ååžŠæææ¡£çæžžæ ïŒè¯¥ææ¡£å
嫿å
³èå管éå€çç诊ç»ä¿¡æ¯ãäŸåŠïŒé€äºå
¶ä»ç»èä¹å€ïŒææ¡£å¯ä»¥æŸç€ºæäœ¿çšçæäœç玢åŒ(åŠææçè¯)ã [1]åŠæ
orders
é忝åçéåïŒåææ¡£è¿å°æŸç€ºåçååå¹¶æäœä¹éŽçåå·¥ïŒä»¥åç®æ æ¥è¯¢ïŒç®æ åçãæ³šæexplain
èŸåºææ¡£ç颿 readers æ¯äººç±»ïŒèäžæ¯æºåšïŒèŸåºæ ŒåŒå¯èœäŒåšäžåçæ¬ä¹éŽåçååã
mongo shell èªåšè¿ä»£è¿åçå
æ 以æå°ç»æãæå
³åšmongo shell äžæåšå€çæžžæ çä¿¡æ¯ïŒè¯·åé
åš mongo Shell äžè¿ä»£äžäžª Cursorã
[1]玢åŒè¿æ»€åšäŒåœ±åæçšçŽ¢åŒçéæ©ãæå ³è¯Šç»ä¿¡æ¯ïŒè¯·åè§çŽ¢åŒè¿æ»€åšã
èå管éé¶æ®µææå€§ memory 䜿çšéå¶ãèŠå€ç倧忰æ®éïŒè¯·å°
allowDiskUse
é项讟眮䞺true
以å¯çšå°æ°æ®åå
¥äžŽæ¶ filesïŒåŠäžé¢çç€ºäŸæç€ºïŒvar results = db.stocks.aggregate(
[
{ $project : { cusip: 1, date: 1, price: 1, _id: 0 } },
{ $sort : { cusip : 1, date: 1 } }
],
{
allowDiskUse: true
}
)
ä»MongoDB 4.2åŒå§ïŒäºä»¶profiler log massagesådiagnostic log massageså
æ¬äžäžª
usedDisk
æç€ºç¬ŠïŒæç€ºæ¯åŠæä»»äœèåé¶æ®µç±äºå
åéå¶èå°æ°æ®åå
¥äžŽæ¶æä»¶ãèŠæå®æžžæ çåå§æ¹å€ç倧å°ïŒè¯·å¯¹
cursor
é项䜿çšä»¥äžè¯æ³ïŒcursor: { batchSize: <int> }
å¯¹äº exampleïŒä»¥äžèåæäœæå®æžžæ çåå§æ¹å€ç倧å°
0
ïŒdb.orders.aggregate(
[
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } },
{ $limit: 2 }
],
{
cursor: { batchSize: 0 }
}
)
A batchSize
0
衚瀺空çç¬¬äžæ¹ïŒå¯¹äºå¿«éè¿åæžžæ æå€±èŽ¥æ¶æ¯èäžæ§è¡éèŠç server-side å·¥äœéåžžæçšãäžå
¶ä» MongoDB æžžæ äžæ ·ïŒå°åç»æ¹é倧尿å®äžºOP_GET_MOREæäœãmongo shell èªåšè¿ä»£è¿åçå
æ 以æå°ç»æãæå
³åšmongo shell äžæåšå€çæžžæ çä¿¡æ¯ïŒè¯·åé
åš mongo Shell äžè¿ä»£äžäžª Cursorã
version 3.4 äžçæ°å
容ã
æŽçå
è®žçšæ·äžº string æ¯èŸæå® language-specific è§åïŒäŸåŠåæ¯åé鳿 è®°çè§åã
éå
myColl
å
·æä»¥äžææ¡£ïŒ{ _id: 1, category: "café", status: "A" }
{ _id: 2, category: "cafe", status: "a" }
{ _id: 3, category: "cafE", status: "a" }
以äžèåæäœå
æ¬æŽçé项ïŒ
db.myColl.aggregate(
[ { $match: { status: "A" } }, { $group: { _id: "$category", count: { $sum: 1 } } } ],
{ collation: { locale: "fr", strength: 1 } }
);
泚æåŠææ§è¡æ¶åå€äžªè§åŸçèå(äŸåŠ$lookupæ$graphLookup)ïŒåè§åŸå¿ é¡»å ·æçžåçæŽçã
æå
³åœç±»å段ç诎æïŒè¯·åé
æŽçæä»¶ã
version 3.6 äžçæ°å
容ã
䜿çšä»¥äžææ¡£å建éå
foodColl
ïŒdb.foodColl.insert([
{ _id: 1, category: "cake", type: "chocolate", qty: 10 },
{ _id: 2, category: "cake", type: "ice cream", qty: 25 },
{ _id: 3, category: "pie", type: "boston cream", qty: 20 },
{ _id: 4, category: "pie", type: "blueberry", qty: 15 }
])
å建以äžçŽ¢åŒïŒ
db.foodColl.createIndex( { qty: 1, type: 1 } );
db.foodColl.createIndex( { qty: 1, category: 1 } );
以äžèåæäœå
æ¬åŒºå¶äœ¿çšæå®çŽ¢åŒç
hint
é项ïŒdb.foodColl.aggregate(
[ { $sort: { qty: 1 }}, { $match: { category: "cake", qty: 10 } }, { $sort: { type: -1 } } ],
{ hint: { qty: 1, category: 1 } }
)
䜿çšè¯¥
readConcern
é项å¯ä»¥æå®æäœç读åå
³æ³šç¹ãæšäžèœå°
$out
æ$merge
é¶æ®µäžé
读å
³æ³šç»å䜿çš"linearizable"
ãä¹å°±æ¯è¯ŽïŒåŠææšäžºæå®äº"linearizable"
读åå
³æ³š db.collection.aggregate()
ïŒåäžèœåšç®¡éäžå
æ¬ä»»äœäžäžªé¶æ®µã坹坿¬éçä»¥äžæäœæå®â 读åå
³æ³šç¹âïŒ
"majority"
以读å已确讀已åå
¥å€§å€æ°èç¹çæ°æ®çææ°å¯æ¬ã泚æ
èŠäœ¿çšâ倿°âçé è¯»å ³æ³š levelïŒreplica sets å¿ é¡»äœ¿çšWiredTiger ååšåŒæå¹¶é䞟protocol version 1ãä» MongoDB 3.6 åŒå§ïŒé»è®€æ åµäžå¯çšå¯¹è¯»åé®é¢â倿°âçæ¯æãå¯¹äº MongoDB 3.6.1 - 3.6.xïŒæšå¯ä»¥çŠçšè¯»åå ³æ³šâ倿°âãæå ³æŽå€ä¿¡æ¯ïŒè¯·åé çŠçšé è¯»å ³æ³šå€æ°ã èŠç¡®ä¿å䞪线çšå¯ä»¥è¯»åèªå·±çåå ¥ïŒè¯·å¯¹å¯æ¬éçäž»èŠäœ¿çšâ倿°â读åå ³æ³šåâ倿°âåå ¥é®é¢ã èŠäœ¿çšâ倿°âçé è¯»å ³æ³š levelïŒæšäžèœå å«$outé¶æ®µã æ 论é è¯»å ³æ³š level åŠäœïŒèç¹äžçææ°æ°æ®å¯èœæ æ³åæ ç³»ç»äžæ°æ®çææ° versionã
db.restaurants.aggregate(
[ { $match: { rating: { $lt: 5 } } } ],
{ readConcern: { level: "majority" } }
)
å䞺
movies
çéåå
嫿 ŒåŒåŠäžçææ¡£ïŒ{
"_id" : ObjectId("599b3b54b8ffff5d1cd323d8"),
"title" : "Jaws",
"year" : 1975,
"imdb" : "tt0073195"
}
以äžèåæäœæ¥æŸåš 1995 幎å建ç圱çïŒå¹¶å
å«
comment
é项以åšlogs
ïŒdb.system.profile
éåådb.currentOp
äžæäŸè·èžªä¿¡æ¯ãdb.movies.aggregate( [ { $match: { year : 1995 } } ], { comment : "match_all_movies_from_1995" } ).pretty()
åšå¯çšäºæ§èœåæçç³»ç»äžïŒæšå¯ä»¥æ¥è¯¢
system.profile
éå以æ¥çæææè¿ç类䌌èåïŒåŠäžæç€ºïŒdb.system.profile.find( { "command.aggregate": "movies", "command.comment" : "match_all_movies_from_1995" } ).sort( { ts : -1 } ).pretty()
è¿å°ä»¥äžåæ ŒåŒè¿åäžç»æ¢æ¥åšç»æïŒ
{
"op" : "command",
"ns" : "video.movies",
"command" : {
"aggregate" : "movies",
"pipeline" : [
{
"$match" : {
"year" : 1995
}
}
],
"comment" : "match_all_movies_from_1995",
"cursor" : {
},
"$db" : "video"
},
...
}
åºçšçšåºå¯ä»¥çŒç order äžçä»»æä¿¡æ¯ïŒä»¥äŸ¿æŽèœ»æŸå°è·èžªæè¯å«ç³»ç»äžçç¹å®æäœãäŸåŠïŒapplication å¯èœéå string commentïŒå
¶äžå
å« process IDïŒçº¿çš IDïŒclient äž»æºååååºåœä»€ççšæ·ã
è¯è
ïŒæå é£
æ ¡å¯¹ïŒ
æè¿æŽæ° 1yr ago