Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
MongoDBµÄѧϰ--Ë÷ÒýÀàÐͺÍÊôÐÔ
 
×÷Õߣº·è¿ñµÄԭʼÈË À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2016-3-4
  2950  次浏览      27
 

Ë÷ÒýÀàÐÍ

MongDBµÄË÷Òý·ÖΪÒÔϼ¸ÖÖÀàÐÍ£ºµ¥¼üË÷Òý¡¢¸´ºÏË÷Òý¡¢¶à¼üË÷Òý¡¢µØÀí¿Õ¼äË÷Òý¡¢È«Îı¾Ë÷ÒýºÍ¹þÏ£Ë÷Òý

µ¥¼üË÷Òý(Single Field Indexes)

ÔÚÒ»¸ö¼üÉÏ´´½¨µÄË÷Òý¾ÍÊǵ¥¼üË÷Òý£¬µ¥¼üË÷ÒýÊÇ×î³£¼ûµÄË÷Òý£¬ÈçMongoDBĬÈÏ´´½¨µÄ_idµÄË÷Òý¾ÍÊǵ¥¼üË÷Òý¡£

Àý×Ó£º

{
"_id" : ObjectId(...),
"name" : "Alice",
"score" : 27
}

Èç¹ûÒªÔÚÈçÉϵÄÎĵµÖд´½¨µ¥¼üË÷Òý£¬Óï¾äÈçÏ£º

db.users.ensureIndex( { "score" : 1 } )

Æä´æ´¢½á¹¹ÈçÏÂͼ£º

Èç¹ûÏëÒªÔÚ×ÓÎĵµµÄÒ»¸ö¼üÉϽ¨Á¢µ¥¼üË÷Òý£¬ÆäÀý×ÓÈçÏ£º

{
"_id": ObjectId(...),
"name": "John Doe",
"address": {
"street": "Main",
"zipcode": "53511",
"state": "WI"
}
}

½á¹¹ÈçÉÏ£¬Æä´´½¨Óï¾äÈçÏ£º

db.users.ensureIndex( { "address.zipcode": 1 } )

Èç¹ûÏëÒªÔÚÕû¸ö×ÓÎĵµÉϽ¨Á¢µ¥¼üË÷Òý£¬ÆäÀý×ÓÈçÏ£º

{
_id: ObjectId(...),
metro: {
city: "New York",
state: "NY"
},
name: "Giant Factory"
}

½á¹¹ÈçÉÏ£¬Æä´´½¨Óï¾äÈçÏ£º

db.factories.ensureIndex( { metro: 1 } )

ÏÂÃæµÄÓï¾äÄܹ»Ê¹ÓÃÆäË÷Òý²éÕÒµ½ÉÏÃæµÄÊý¾Ý£º

db.factories.find( { metro: { city: "New York", state: "NY" } } )

µ«ÔÙÏÂÃæµÄÕâÒ»ÌõÓï¾ä¾Í²é²»µ½Êý¾ÝÁË£¬ËµÃ÷×ÓÎĵµµÄ²éÕÒ±ØÐëÊǾ«È·Æ¥Å䣬°üÀ¨×ÓÎĵµÖеÄ˳Ðò£º

db.factories.find( { metro: { state: "NY", city: "New York" } } )

¸´ºÏË÷Òý(Compound Indexes)

ÔÚ¶à¸ö¼üÉϽ¨Á¢µÄË÷Òý¾ÍÊǸ´ºÏË÷Òý¡£

Àý×Ó£º

{
"_id": ObjectId(...),
"userid": "aa1",
"category": ["food", "produce", "grocery"],
"location": "4th Street Store",
"score": 4
}

Èç¹ûÒªÔÚÈçÉϵÄÎĵµÖд´½¨¸´ºÏË÷Òý£¬Óï¾äÈçÏ£º

db.products.ensureIndex( { "userid": -1, "score": 1 } )

useridÊÇÕýÐòÅÅÁУ¬scoreÊÇÄæÐòÅÅÁеġ£Æä´æ´¢½á¹¹ÈçÏÂͼ£º

Õâ¸öË÷Òý¿ÉÒÔÖ§³ÖÈçϵÄÅÅÐò£º

db.products.find().sort( { userid: 1, score: -1 } )£»
db.products.find().sort( { userid: -1, score: 1 } )£»
db.products.find().sort( { userid: 1 } )£»
db.products.find().sort( { userid: -1 } )£»

²»ÄÜÖ§³ÖÈçϵÄÅÅÐò£º

db.products.find().sort( { userid: 1, score: 1 } )£»
db.products.find().sort( { userid: -1, score: -1 } )£»
db.products.find().sort( { score: 1 } )£»
db.products.find().sort( { score: -1 } )£»

¶à¼üË÷Òý(Multikey Index)

Èç¹ûÔÚÒ»¸öÊý×éÉÏÃæ´´½¨Ë÷Òý£¬MongoDB»á×Ô¼º¾ö¶¨£¬ÊÇ·ñÒª°ÑÕâ¸öË÷Òý½¨³É¶à¼üË÷Òý¡£

Èç¹ûÊý¾Ý½á¹¹ÈçÏ£¨Á½ÖÖ£©£º

{a: [1, 2], b: 1}
{a: 1, b: [1, 2]}

Äã¿ÉÒÔ´´½¨{ a: 1, b: 1 }£¬»áÊǶà¼ü¸´ºÏË÷Òý¡£

¶à¼üË÷Òý½á¹¹ÈçÏ£º

Àý×Ó£º

{
"_id" : ObjectId("..."),
"name" : "Warm Weather",
"author" : "Steve",
"tags" : [ "weather", "hot", "record", "april" ]
}

Îĵµ½á¹¹ÈçÉÏ£¬Èç¹ûÄãÔÚtagsÉÏ´´½¨Ë÷Òý£¬¾Í»á´´½¨³ö¶à¼üË÷Òý

Èç¹ûÎĵµ½á¹¹ÈçÏ£º

{
"_id": ObjectId(...),
"title": "Grocery Quality",
"comments": [{
author_id: ObjectId(...),
date: Date(...),
text: "Please expand the cheddar selection."
}, {
author_id: ObjectId(...),
date: Date(...),
text: "Please expand the mustard selection."
}, {
author_id: ObjectId(...),
date: Date(...),
text: "Please expand the olive selection."
}]
}

´´½¨{ "comments.text": 1 } Ë÷ÒýÒ²»áÊǶà¼üË÷Òý£¬ÇÒÔÚÈçϲéÕÒÓï¾äÖÐÓÐЧ£º

db.feedback.find( { "comments.text": "Please expand the olive selection." } )

µØÀí¿Õ¼äË÷Òý(Geospatial Indexes and Queries)

MongoDBÖ§³Ö¼¸ÖÖÀàÐ͵ĵØÀí¿Õ¼äË÷Òý¡£ÆäÖÐ×î³£ÓõÄÊÇ 2dsphere Ë÷Òý£¨ÓÃÓÚµØÇò±íÃæÀàÐ͵ĵØÍ¼£©ºÍ 2d Ë÷Òý£¨ÓÃÓÚÆ½ÃæµØÍ¼ºÍʱ¼äÁ¬ÐøµÄÊý¾Ý£©¡£

1) 2dsphere

2dsphere ÔÊÐíʹÓÃGeoJSON¸ñʽ£¨http://www.geojson.org£©Ö¸¶¨µã¡¢ÏߺͶà±ßÐΡ£

µã¿ÉÒÔÓÃÐÎÈç[longitude, latitude]£¨[¾­¶È£¬ γ¶È]£©µÄÁ½¸öÔªËØµÄÊý×é±íʾ£º

{
"name" : "New York City",
"loc" : {
"type" : "Point",
"coordinates" : [50, 2]
}
}

Ïß¿ÉÒÔÓÃÒ»¸öÓɵã×é³ÉµÄÊý×éÀ´±íʾ£º

{
"name" : "Hudson River",
"loc" : {
"type" : "LineString",
"coordinates" : [[0, 1], [0, 2], [1, 2]]
}
}

¶à±ßÐÎÊÇÓÉÏß×é³ÉµÄÊý×éÀ´±íʾ£º

{
"name" : "New England",
"loc" : {
"type" : "Polygon",
"coordinates" : [[[0, 1], [0, 2], [1, 2], [0, 1]]]
}
}

2dsphere Ö§³Ö Point¡¢MultiPoint¡¢LineString¡¢MultiLineString¡¢Polygon¡¢MultiPolygon¡¢Geometry Collection

loc ×ֶεÄÃû×Ö¿ÉÒÔÊÇÈÎÒâµÄ£¬µ«ÊÇÆäÖÐ×Ó¶ÔÏóÊÇÓÉ GeoJSON Ö¸¶¨µÄ£¬²»Äܸı䡣

ÔÚ ensureIndex ÖÐʹÓà 2dsphere Ñ¡Ïî¾Í¿ÉÒÔ´´½¨Ò»¸öµØÀí¿Õ¼äË÷Òý£º

db.world.ensureIndex({"loc": "2dsphere"})

¿ÉÒÔʹÓöàÖÖ²»Í¬µÄµØÀí¿Õ¼ä²éѯ£º½»¼¯£¨intersection£©¡¢°üº¬£¨within£©ÒÔ¼°½Ó½ü£¨nearness£©¡£²éѯʱ£¬ÐèÒª½«Ï£Íû²éÕÒµÄÄÚÈÝÖ¸¶¨ÎªÐÎÈç {"$geometry":geoJsonDesc} µÄ GeoJSON ¶ÔÏó¡£

½»¼¯£¨intersection£©£¬Ê¹Óà $geoIntersects ²Ù×÷·û£º

var place = {
"type" : "Polygon",
"coordinates" : [[[0, 1], [0, 3], [50, 2], [0, 1]]]
}
db.world.find({"loc" : {"$geoIntersects" : {"$geometry" : place}}})

»á²éÕÒ³öËùÓÐÓë place Óн»¼¯µÄÎĵµ¡£

°üº¬£¨within£©£¬Ê¹Óà $within »òÕß $geoWithin ²Ù×÷·û£º

db.world.find({"loc" : {"$within" : {"$geometry" : place}}})

½Ó½ü£¨nearness£©£¬Ê¹Óà $near »òÕß $geoNear ²Ù×÷·û£º

var place = {
"type" : "Point",
"coordinates" : [0, 3]
}
db.world.find({"loc" : {"$near" : {"$geometry" : place}}})

place ±ØÐëÊǸöµã£¬$near ÊÇΨһһ¸ö»á¶Ô²éѯ½á¹û½øÐÐ×Ô¶¯ÅÅÐòµÄµØÀí¿Õ¼ä²Ù×÷·û£¬$near µÄ·µ»Ø½á¹ûÊǰ´ÕÕ¾àÀëÓɽü¼°Ô¶ÅÅÐòµÄ¡£

2) 2d

2d Ë÷ÒýÓÃÓÚ±âÆ½»¯±íÃæ£¬¶ø²»ÊÇÇòÌå±íÃæ£¬·ñÔò¼«µã¸½½ü»á³öÏÖ´óÁ¿µÄŤÇú±äÐΡ£

ÎĵµÖÐʹÓðüº¬Á½¸öÔªËØµÄÊý×é±íʾ 2d Ë÷Òý×ֶΣ¬²»ÊÇ GeoJSON µÄ¸ñʽ¡£

{
"name": "Water Temple",
"tile": [32, 22]
}

2d Ë÷ÒýÖ»ÄÜ¶Ôµã½øÐÐË÷Òý¡£¿ÉÒÔ±£´æÒ»¸öÓɵã×é³ÉµÄÊý×飬µ«ÊÇËüÖ»»á±»±£´æÎªÓɵã×é³ÉµÄÊý×飬²»»á±»µ±³ÉÏß¡£ÌرðÊÇ¶Ô $within ²éѯÀ´Ëµ£¬Êý×éÖеÄij¸öµãÔÚ²éѯ·¶Î§ÄÚ£¬¸ÃÎĵµ¾Í»á±»ÕÒ³ö¡£

ÔÚ ensureIndex ÖÐʹÓà 2d Ñ¡Ïî¾Í¿ÉÒÔ´´½¨Ò»¸öµØÀí¿Õ¼äË÷Òý£¬Ò²¿ÉÒÔÔÚÆäÖÐÉèÖÃ×î´ó×îС±ß½çÖµºÍ¾«¶È¡£Ä¬ÈÏÇé¿öÏ£¬×î´óÖµºÍ×îСֵµÄ·¶Î§ÊÇ[ -180 , 180 )£¬¾«¶ÈÊÇ26λµÄ¾«¶È£¬´óÖÂÏ൱ÓÚ2Ó¢³ß»ò60ÀåÃ׵ľ«¶È£º

db.places.ensureIndex({"tile" : "2d"}, {"min" : -90, "max" : 90, "bits" : 20})

Õâ»á´´½¨Ò»¸ö180*180´óСµÄ¿Õ¼äË÷Òý¡£

2d Ë÷ÒýµÄ²éѯ±È 2dsphere ¼òµ¥Ðí¶à£¬¿ÉÒÔÖ±½ÓʹÓÃ$near ºÍ $within£¬¶ø²»±Ø´øÓÐ $geometry ×Ó¶ÔÏó£º

db.places.find({"tile": {"$near": [20, 21]}}).limit(10)

Èç¹û²»¼Ó limit£¬Ä¬ÈÏ×î¶à·µ»Ø100Ìõ¡£

$within ¿ÉÒÔ²éѯ³öij¸öÐÎ×´ÀïµÄËùÓÐÎĵµ£¬¿ÉÒÔÊǾØÐΣ¨$box£©¡¢Ô²ÐΣ¨$center£©»òÕß¶à±ßÐΣ¨$polygon£©¡£

db.places.find({"tile": {"$within":  {"$box": [[0, 0], [30, 30]]}}})

$box ½ÓÊÕÁ½¸öÔªËØ£¬µÚÒ»¸öÔªËØÊǾØÐεÄ×óϽÇ×ø±ê£¬µÚ¶þ¸öÔªËØÊǾØÐεÄÓÒÉϽÇ×ø±ê¡£

db.places.find({"tile": {"$within":   {"$center": [[30, 30], 10]}}})

$center Ò²½ÓÊÕÁ½¸öÔªËØ£¬µÚÒ»¸öÔªËØÊÇÔ²ÐĵãµÄ×ø±ê£¬µÚ¶þ¸öÊÇÔ²µÄ°ë¾¶¡£

db.places.find({"tile": {"$within":  {"$polygon": [[0, 0], [30, 30], [0, 25]]}}})

$polygon ½ÓÊÕ¶à¸öµã×é³ÉµÄÊý×飬ÓÃÀ´Ö¸¶¨¶à±ßÐΡ£

²»¹ÜÊÇ 2dsphere Ë÷Òý»¹ÊÇ 2d Ë÷Òý£¬¶¼¿ÉÒÔºÍÆäËû×Ö¶ÎÒ»Æð×é³É¸´ºÏË÷Òý£º

db.world.ensureIndex({"name": 1, "loc": "2dsphere"})

È«ÎÄË÷Òý(Text Indexes)

È«ÎÄË÷ÒýÓÃÓÚÔÚÎĵµÖÐËÑË÷Îı¾£¬ÎÒÃÇÒ²¿ÉÒÔʹÓÃÕýÔò±í´ïʽÀ´²éѯ×Ö·û´®£¬µ«Êǵ±Îı¾¿é±È½Ï´óµÄʱºò£¬ÕýÔò±í´ïʽËÑË÷»á·Ç³£Âý£¬¶øÇÒÎÞ·¨´¦ÀíÓïÑÔÀí½âµÄÎÊÌ⣨Èç entry ºÍ entries Ó¦¸ÃËãÊÇÆ¥ÅäµÄ£©¡£Ê¹ÓÃÈ«ÎÄË÷Òý¿ÉÒԷdz£¿ìµØ½øÐÐÎı¾ËÑË÷£¬¾ÍÈçͬÄÚÖÃÁ˶àÖÖÓïÑÔ·Ö´Ê»úÖÆµÄÖ§³ÖÒ»Ñù¡£´´½¨Ë÷ÒýµÄ¿ªÏú¶¼±È½Ï´ó£¬È«ÎÄË÷ÒýµÄ¿ªÏú¸ü´ó¡£´´½¨Ë÷Òýʱ£¬Ðèºǫ́»òÀëÏß´´½¨¡£

{
"_id" : ObjectId("55a0e30427c9370e525032e9"),
"content" : "This morning I had a cup of coffee.",
"about" : "beverage",
"keywords" : [
"coffee"
]
}
{
"_id" : ObjectId("55a0e31027c9370e525032ea"),
"content" : "Who doesn't like cake?",
"about" : "food",
"keywords" : [
"cake",
"food",
"dessert"
]
}

ÎĵµÈçÉÏËùʾ£¬ÔÚ content ÉÏ´´½¨È«ÎÄË÷Òý£º

db.article.ensureIndex({"content": "text"})

ʹÓÃÈ«ÎÄË÷Òý²éѯÄÚÈÝ£º

db.article.find({"$text": {"$search": "coffee"}})

Èç¹ûÒªÔÚËùÓÐ×Ö·û´®µÄ¼üÉϽøÐÐÎı¾ËÑË÷£¬ÇëʹÓÃͨÅä·û ($**) À´Ë÷ÒýËùÓеİüº¬×Ö·û´®µÄ¼ü¡£´´½¨ÁËÒ»¸ö article ÖÐËùÓÐÎĵµµÄËùÓмüµÄ×Ö·û´®½øÐÐË÷ÒýµÄË÷Òý£¬ÇÒÃüÃûΪ TextIndex£º

db.article.ensureIndex({"$**": "text"}, {"name": "TextIndex"})

±»Ë÷ÒýµÄÊý¾ÝµÄĬÈÏÓïÑÔ¾ö¶¨ÁËÈçºÎ½âÎö´Ê¸ùÒÔ¼°ºöÂÔÍ£Ö¹´ÊµÄ¹æÔò¡£±»Ë÷ÒýÊý¾ÝµÄĬÈÏÓïÑÔÊÇÓ¢Óï¡£Èç¹ûÏ£ÍûÖ¸¶¨Ò»¸ö²»Í¬µÄÓïÑÔ£¬ÔÚ´´½¨È«ÎÄË÷ÒýʱʹÓà default_language Ñ¡Ïî¡£

Ö§³ÖÈçÏÂÓïÑÔ£¨²»Ö§³ÖÖÐÎÄ£¬ÖÁÉÙÔÚ 2.6 µÄ°æ±¾ÖÐÊÇÕâÑùµÄ£©£º

da or danish
nl or dutch
en or english
fi or finnish
fr or french
de or german
hu or hungarian
it or italian
nb or norwegian
pt or portuguese
ro or romanian
ru or russian
es or spanish
sv or swedish
tr or turkish

×¢£ºÈç¹ûÄú½«ÓïÑÔÖ¸¶¨ÎªÖµ "none" £¬ÄÇô text search »áʹÓüòµ¥µÄ·Ö´ÊÆ÷£¬Ã»ÓÐÍ£Ö¹´ÊҲûÓÐÈ¡´Ê¸ù´¦Àí¡£

db.quotes.ensureIndex({"content": "text"}, {"default_language": "spanish"})

¹þÏ£Ë÷Òý(Hashed Index)

¹þÏ£Ë÷Òý¿ÉÒÔÖ§³ÖÏàµÈ²éѯ£¬µ«ÊǹþÏ£Ë÷Òý²»Ö§³Ö·¶Î§²éѯ¡£Äú¿ÉÄÜÎÞ·¨´´½¨Ò»¸ö´øÓйþÏ£Ë÷Òý¼üµÄ¸´ºÏË÷Òý»òÕß¶Ô¹þÏ£Ë÷ÒýÊ©¼ÓΨһÐÔµÄÏÞÖÆ¡£µ«ÊÇ£¬Äú¿ÉÒÔÔÚͬһ¸ö¼üÉÏͬʱ´´½¨Ò»¸ö¹þÏ£Ë÷ÒýºÍÒ»¸öµÝÔö/µÝ¼õ(ÀýÈ磬·Ç¹þÏ£)µÄË÷Òý£¬ÕâÑùMongoDB¶ÔÓÚ·¶Î§²éѯ¾Í»á×Ô¶¯Ê¹Ó÷ǹþÏ£µÄË÷Òý¡£

db.active.ensureIndex({"a": "hashed"})

ÉÏÃæµÄ²Ù×÷½«»áÔÚ active µÄ a ¼üÉÏ´´½¨Ò»¸ö¹þÏ£Ë÷Òý¡£

Ë÷ÒýÊôÐÔ

MongDBµÄË÷ÒýÊôÐÔÓÐÒÔϼ¸ÖÖ£ºTTLË÷Òý¡¢Î¨Ò»Ë÷ÒýºÍÏ¡ÊèË÷Òý¡£

TTLË÷Òý(TTL Indexes)

TTLË÷ÒýÊÇÒ»ÖÖÌØÊâË÷Òý£¬Í¨¹ýÕâÖÖË÷ÒýMongoDB»á¹ýÒ»¶Îʱ¼äºó×Ô¶¯ÒƳý¼¯ºÏÖеÄÎĵµ¡£Õâ¶ÔÓÚijЩÀàÐ͵ÄÐÅÏ¢À´ËµÊÇÒ»¸öºÜÀíÏëµÄÌØÐÔ£¬ÀýÈç»úÆ÷Éú³ÉµÄʼþÊý¾Ý¡¢ÈÕÖ¾¡¢»á»°ÐÅÏ¢µÈ£¬ÕâЩÊý¾Ý¶¼Ö»ÐèÒªÔÚÊý¾Ý¿âÖб£´æÓÐÏÞʱ¼ä¡£

TTLË÷ÒýÓÐÈçÏÂÏÞÖÆ£º

Ëü²»Ö§³Ö¸´ºÏË÷Òý¡£

±»Ë÷Òý¼ü±ØÐëÊÇÈÕÆÚÀàÐ͵ÄÊý¾Ý¡£

Èç¹ûÕâ¸ö¼ü´æ´¢µÄÊÇÒ»¸öÊý×飬ÇÒÔÚË÷ÒýÖÐÓжà¸öÈÕÆÚÀàÐ͵ÄÊý¾Ý(ºÍһƪÎĵµ¹ØÁª)£¬ÄÇôµ±ÆäÖÐ×îµÍ (±ÈÈ磬×îÔç)¹ýÆÚ·§ÖµµÃµ½Æ¥Åäʱ£¬ÕâÆªÎĵµ¾Í»á¹ýÆÚʧЧÁË¡£

TTLË÷Òý²»Äܱ£Ö¤¹ýÆÚÊý¾Ý»á±»Á¢¿Ìɾ³ý¡£ÔÚÎĵµ¹ýÆÚºÍMongoDB´ÓÊý¾Ý¿âÖÐɾ³ýÎĵµÖ®¼ä£¬¿ÉÄÜ»áÓÐÑÓ³Ù¡£É¾³ý¹ýÆÚÊý¾ÝµÄºǫ́ÈÎÎñ ÿ¸ô60Ãë ÔËÐÐÒ»´Î¡£ËùÒÔ£¬ÔÚÎĵµ¹ýÆÚ Ö®ºó ºÍ ºǫ́ÈÎÎñÔËÐлòÕß½áÊø ֮ǰ £¬Îĵµ»áÒÀÈ»´æÔÚÓÚ¼¯ºÏÖС£É¾³ý²Ù×÷µÄ³ÖÐøÊµ¼ÊÈ¡¾öÓÚÄúµÄ mongod ʵÀýµÄ¸ºÔØ¡£Òò´Ë£¬ÔÚÁ½´Îºǫ́ÈÎÎñÔËÐеļä¸ô¼ä£¬¹ýÆÚÊý¾Ý¿ÉÄÜ»á¼ÌÐøÁôÔÚÊý¾Ý¿âÖг¬¹ý60Ãë¡£ÔÚÆäËû·½Ã棬TTLË÷ÒýÊÇÆÕͨË÷Òý£¬²¢ÇÒÈç¹û¿ÉÒԵϰ£¬MongoDB»áʹÓÃÕâЩË÷ÒýÀ´Æ¥ÅäÈÎÒâ²éѯ¡£

db.token.ensureIndex({"lastUpdated": 1}, {"expireAfterSecs": 60*60*24})

token ³¬¹ý24Сʱ¾Í»á±»É¾³ýµô¡£

ΨһË÷Òý(Unique Indexes)

ΨһË÷Òý¿ÉÒԾܾø±£´æÄÇЩ±»Ë÷Òý¼üµÄÖµÒѾ­Öظ´µÄÎĵµ¡£

db.members.ensureIndex({"user_id": 1}, {unique: true})

ĬÈÏÇé¿öÏ£¬MongoDBË÷ÒýµÄ unique ÊôÐÔÊÇ false ¡£Èç¹û¶Ô¸´ºÏË÷ÒýÊ©¼ÓΨһÐÔµÄÏÞÖÆ£¬ÄÇôMongoDB¾Í»áÇ¿ÖÆÒªÇó¸´ºÏÖµµÄΨһÐÔ£¬¶ø²»ÊÇ·Ö±ð¶Ôÿ¸öµ¥¶ÀµÄÖµÒªÇóΨһ¡£

ΨһÐÔµÄÏÞÖÆÊÇÕë¶ÔÒ»¸ö¼¯ºÏÖв»Í¬ÎĵµµÄ¡£Ò²¼´£¬Î¨Ò»Ë÷Òý¿ÉÒÔ·ÀÖ¹ ²»Í¬ ÎĵµµÄ±»Ë÷Òý¼üÉÏ´æ´¢Ïàֵͬ£¬µ«ÊÇËü²»½ûֹͬһƪÎĵµÔÚ±»Ë÷Òý¼ü´æ´¢µÄÊý×éÀï´æ´¢µÄÔªËØ»òÕßÄÚǶÎĵµÊÇÏàͬµÄÖµ¡£ÔÚͬһƪÎĵµ´æ´¢Öظ´Êý¾ÝµÄÇé¿öÏ£¬Öظ´µÄÖµÖ»»á±»´æÈëË÷ÒýÒ»´Î¡£

ÀýÈ磬һ¸ö¼¯ºÏÓÐÒ»¸öΨһË÷Òý a.b £º

db.collection.ensureIndex({"a.b": 1 }, {unique: true})

¼ÙÈçÔÚ¼¯ºÏÖÐûÓÐÆäËûµÄÎĵµµÄ a.b ¼üµÄÖµÊÇ 5 £¬ÄÇôΨһË÷Òý½«»áÔÊÐí½«ÒÔÏÂÎĵµ²åÈ뼯ºÏ£º

db.collection.insert({a: [{b: 5}, {b: 5}]})

Èç¹ûһƪÎĵµ²»°üº¬Î¨Ò»Ë÷ÒýµÄ±»Ë÷Òý¼ü£¬ÄÇôË÷ÒýĬÈÏ»áΪ¸ÃÎĵµ´æ´¢Ò»¸önullÖµ¡£ÓÉÓÚΨһÐÔµÄÏÞÖÆ£¬MongoDB½«Ö»ÔÊÐíÓÐһƪ¿ÉÒÔ²»°üº¬±»Ë÷Òý¼ü¡£Èç¹û³¬¹ýһƪÎĵµ²»°üº¬±»Ë÷Òý¼ü»òûÓÐÖµ£¬ÄÇô»áÅ׳ö¼üÖØ¸´(duplicate key)´íÎóµ¼ÖÂË÷Òý´´½¨Ê§°Ü¡£¿ÉÒÔ×éºÏʹÓÃΨһÐÔºÍÏ¡ÊèË÷ÒýµÄÌØÐÔÀ´¹ýÂËÄÇЩ°üº¬nullÖµµÄÎĵµÒÔ±ÜÃâÕâ¸ö´íÎó¡£

Ï¡ÊèË÷Òý(Sparse Indexes)

Ï¡ÊèË÷Òý»áÌø¹ýËùÓв»°üº¬±»Ë÷Òý¼üµÄÎĵµ¡£Õâ¸öË÷ÒýÖ®ËùÒÔ³ÆÎª ¡°Ï¡Ê衱 ÊÇÒòΪËü²¢²»°üÀ¨¼¯ºÏÖеÄËùÓÐÎĵµ¡£ÓëÖ®Ïà·´£¬·ÇÏ¡ÊèµÄË÷Òý»áË÷ÒýÿһƪÎĵµ£¬Èç¹ûһƪÎĵµ²»º¬±»Ë÷Òý¼üÔòΪËü´æ´¢Ò»¸önullÖµ¡£

db.addresses.ensureIndex({"xmpp_id": 1}, {"sparse": true})

Èç¹ûÒ»¸öË÷Òý»áµ¼Ö²éѯ»òÕßÅÅÐòµÄ½á¹û¼¯ÊDz»ÍêÕûµÄ£¬ÄÇôMongoDB½«²»»áʹÓÃÕâ¸öË÷Òý£¬³ý·ÇÓû§Ê¹Óà hint() ·½·¨À´ÏÔʾָ¶¨Ë÷Òý¡£ÀýÈ磬²éѯ { x: { $exists: false } } ½«²»»áʹÓà x ¼üÉϵÄÏ¡ÊèË÷Òý£¬³ý·ÇÏÔʾµÄhint¡£

2dsphere (version 2), 2d ºÍ text ÕâЩË÷Òý×ÜÊÇÏ¡ÊèµÄ¡£

ֻҪһƪÎĵµÀïÓÐÖÁÉÙÒ»¸ö±»Ë÷Òý¼ü£¬Ï¡ÊèÇÒÖ»°üº¬ÓеÝÔö/µÝ¼õË÷Òý¼üµÄ¸´ºÏË÷Òý¾Í»áË÷ÒýÕâÆªÎĵµ¡£

ÖÁÓÚÏ¡ÊèÇÒ°üº¬ÓеØÀíË÷Òý¼ü(ÀýÈç 2dsphere, 2d)ÒÔ¼°µÝÔö/µÝ¼õË÷Òý¼üµÄ¸´ºÏË÷Òý£¬Ö»ÓеØÀíË÷Òý¼üµÄ´æÔÚÓë·ñÄܾö¶¨Ò»ÆªÎĵµÊÇ·ñ±»Ë÷Òý¡£

ÖÁÓÚÏ¡ÊèÇÒ°üº¬ÁËÈ«ÎÄË÷Òý¼üºÍÆäËûµÝÔö/µÝ¼õË÷Òý¼üµÄ¸´ºÏË÷Òý£¬Ö»ÓÐÈ«ÎÄË÷Òý¼üµÄ´æÔÚÓë·ñÄܾö¶¨ÊÇ·ñË÷Òý¸ÃÎĵµ¡£

Ò»¸öÏ¡ÊèÇÒΨһµÄË÷Òý£¬¿ÉÒÔ·ÀÖ¹¼¯ºÏÖеÄÎĵµ±»Ë÷Òý¼üÖгöÏÖÖØ¸´Öµ£¬Í¬Ê±Ò²ÔÊÐí¶à¸öÎĵµÀï²»°üº¬±»Ë÷Òý¼ü¡£

   
2950 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ

²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí

GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí