db.collection.distinct()
åšæ¬é¡µé¢
db.collection.
distinct
(åæ®µïŒæ¥è¯¢ïŒé项)- åšå䞪éåæè§åŸäžæ¥æŸæå®å段çäžååŒïŒå¹¶åš array äžè¿åç»æã
åæ° | ç±»å | æè¿° |
---|---|---|
field | string | èŠäžºå
¶è¿åäžååŒçåæ®µã |
query | document | äžäžªæ¥è¯¢ïŒæå®ä»äžæ£çŽ¢äžååŒçææ¡£ã |
options | document | å¯éçãæå®éé¡¹çææ¡£ãè§é项ã |
db.collection.distinct()æ¹æ³åšäžååœä»€åšåŽæäŸ wrapperã
泚æç»æäžåŸå€§äºæå€§BSON 倧å°ãåŠæç»æè¶ è¿æå€§ BSON 倧å°ïŒè¯·äœ¿çšèå管é䜿çš$group operator æ£çŽ¢äžåçåŒïŒåŠäœ¿çšèåç®¡éæ£çŽ¢äžåçåŒäžæè¿°ã
{ collation: <document> }
é¢å | ç±»å | æè¿° |
---|---|---|
collation | document | å¯éçãæå®èŠçšäºæäœçæŽçãæŽçå
è®žçšæ·äžº string æ¯èŸæå® language-specific è§åïŒäŸåŠåæ¯åé鳿 è®°çè§åã æåºè§åé项å
·æä»¥äžè¯æ³ïŒ collation: { 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 äžçæ°å
容ã |
åšåçé矀äžïŒäžååœä»€å¯èœè¿åå€ç«ææ¡£ã
åŠææå®ç
field
ç value æ¯ arrayïŒådb.collection.distinct()å° array çæ¯äžªå
çŽ è§äžºåç¬ç valueãäŸåŠïŒåŠææäžªå段ç value 䞺
[ 1, [1], 1 ]
ïŒådb.collection.distinct()å°1
ïŒ[1]
å1
è§äžºåç¬çåŒãå¯¹äº exampleïŒè¯·åé
è¿å Array åæ®µçäžååŒã
åŠæå¯èœïŒdb.collection.distinct()æäœå¯ä»¥äœ¿çšçŽ¢åŒã
玢åŒä¹å¯ä»¥èŠç db.collection.distinct()æäœãæå
³çŽ¢åŒæ¶µççæ¥è¯¢ç诊ç»ä¿¡æ¯ïŒè¯·åé
æ¶µçæ¥è¯¢ã
åšäºå¡äžæ§è¡äžåçæäœïŒ
- å¯¹äºæªåççéåïŒæšå¯ä»¥åšèå°äžäœ¿çš
db.collection.distinct()
æ¹æ³/distinct
åœä»€ä»¥åèå管é$group
ã - 对äºåçéåïŒäžèœäœ¿çš
db.collection.distinct()
æ¹æ³ædistinct
åœä»€ãèŠæ¥æŸåçéåçäžååŒïŒè¯·åš$group
é¶æ®µäœ¿çšèå管éãæå ³è¯Šç»ä¿¡æ¯ïŒè¯·åè§â åºå«æäœ âã
éèŠåšå€§å€æ°æ åµäžïŒäžåææ¡£åå ¥çžæ¯ïŒå€ææ¡£äºå¡äº§ççæ§èœææ¬æŽé«ïŒå¹¶äžå€ææ¡£äºå¡çå¯çšæ§äžåºæ¿ä»£ææçæ¶æè®Ÿè®¡ãåšè®žå€æ åµäžïŒ éè§èåæ°æ®æš¡åïŒåµå ¥åŒææ¡£åæ°ç»ïŒå°ç»§ç»æ¯æšçæ°æ®åçšäŸçæäœ³éæ©ãä¹å°±æ¯è¯ŽïŒåšè®žå€æ åµäžïŒéåœå°å¯¹æ°æ®å»ºæš¡å°æå€§çšåºŠå°åå°å¯¹å€ææ¡£äº€æçéæ±ãæå ³å ¶ä»äºå¡äœ¿çšæ¹é¢ç泚æäºé¡¹ïŒäŸåŠè¿è¡æ¶éå¶åæäœæ¥å¿å€§å°éå¶ïŒïŒåŠè¯·åè§ ç产泚æäºé¡¹ã
ä»MongoDB 4.2åŒå§ïŒåŠæååº
db.collection.distinct()
æåŒè¿æ¥ç客æ·ç«¯åšæäœå®æä¹åæåŒè¿æ¥ïŒåMongoDBå°æ è®°db.collection.distinct()
äžºç»æ¢ïŒå³killOp
åšæäœäžïŒãè¿äºç€ºäŸäœ¿çšå
å«ä»¥äžææ¡£ç
inventory
éåïŒ{ "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
{ "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
{ "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
{ "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
ä»¥äž example ä»
inventory
éåäžçææææ¡£è¿ååæ®µdept
çäžååŒïŒdb.inventory.distinct( "dept" )
è¯¥æ¹æ³è¿åä»¥äž array äžåç
dept
åŒïŒ[ "A", "B" ]
ä»¥äž example ä»
inventory
éåäžçææææ¡£è¿ååµå
¥åšitem
åæ®µäžçåæ®µsku
çäžååŒïŒdb.inventory.distinct( "item.sku" )
è¯¥æ¹æ³è¿åä»¥äž array äžåç
sku
åŒïŒ[ "111", "222", "333" ]
ä¹å¯ä»¥ççç¹ç¬Šå·æå ³è®¿é®åµå ¥ææ¡£äžçåæ®µçä¿¡æ¯
ä»¥äž example ä»
inventory
éåäžçææææ¡£è¿ååæ®µsizes
çäžååŒïŒdb.inventory.distinct( "sizes" )
è¯¥æ¹æ³è¿åä»¥äž array äžåç
sizes
åŒïŒ[ "M", "S", "L" ]
æå
³distinct()å array åæ®µçä¿¡æ¯ïŒè¯·åé
è¡äžºéšåã
ä»¥äž example ä»
dept
çäº"A"
çææ¡£äžè¿ååµå
¥åšitem
åæ®µäžçåæ®µsku
çäžååŒïŒdb.inventory.distinct( "item.sku", { dept: "A" } )
è¯¥æ¹æ³è¿åä»¥äž array äžåç
sku
åŒïŒ[ "111", "333" ]
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.distinct( "category", {}, { collation: { locale: "fr", strength: 1 } } )
æå
³åœç±»å段ç诎æïŒè¯·åé
æŽçæä»¶ã
è¯è
ïŒæå é£
æ ¡å¯¹ïŒ
æè¿æŽæ° 1yr ago