?
mongoDB³£¼ûµÄ²éѯË÷Òý£¨Èý£©(Èý)
score" : 1.2 }
{ "_id" : ObjectId("5572905671c0bbd90f4ce0e4"), "article" : "aa bb cc zz ff ww", "score" : 1.1666666666666667 }
>
? ? ʹÓÃÏÞÖÆ
? ? ? ? 1. ÿ´Î²éѯֻÄÜÖ¸¶¨Ò»¸ö$text²éѯ
? ? ? ? 2. $text²éѯ²»ÄܳöÏÖÔÚ$nor²éѯÖÐ
? ? ? ? 3. ²éѯÖÐÈç¹û°üº¬ÁË$text£¬hint²»ÔÙÆð×÷ÓÃ
? ? ? ? 4. MongoDBÈ¥×öÄãÎÊË÷ÒýÏÖÔÚ»¹²»Ö§³ÖÖÐÎÄ
?
7.µØÀíλÖÃË÷Òý
¸ÅÄ½«Ò»Ð©µãµÄλÖô洢ÔÚMongoDBÖУ¬´´½¨Ë÷Òýºó£¬¿ÉÒÔ°´ÕÕλÖÃÀ´²éÕÒÆäËûµã¡£?
·ÖÀࣺ
? ? 1. 2dË÷Òý£¬ÓÃÓÚ´æ´¢ºÍ²éÕÒÆ½ÃæÉϵĵã
? ? 2. 2dsphereË÷Òý£¬ÓÃÓÚ´æ´¢ºÍ²éÕÒÇòÃæÉϵĵã
²éÕÒ·½Ê½£º
? ? 1. ²éÕÒ¾àÀëij¸öµãÒ»¶¨¾àÀëÄڵĵ㡣
? ? 2. ²éÕÒ°üº¬ÔÚÄ³ÇøÓòÄڵĵ㡣
?
2dË÷Òý
´´½¨£ºdb.location.ensureIndex({"w":"2d"})
? ? λÖñíʾ·½Ê½£º¾Î³¶È[¾¶È£¬Î³¶È]
? ? ȡֵ·¶Î§£º¾¶È[-180,180] γ¶È[-90,90]
²éѯ·½Ê½
? ? 1. $near²éѯ£º²éѯ¾àÀëij¸öµã×î½üµÄµã
? ? 2. $geoWithin²éѯ£º²éѯij¸öÐÎ×´Äڵĵã
1. $near²éѯ
?
> db.location.ensureIndex({"w":"2d"}) #´´½¨2dË÷Òý
> db.location.insert({w:[1,1]}) #²åÈë²âÊÔÊý¾Ý
WriteResult({ "nInserted" : 1 })
> db.location.insert({w:[1,2]})
WriteResult({ "nInserted" : 1 })
> db.location.insert({w:[2,3]})
WriteResult({ "nInserted" : 1 })
> db.location.insert({w:[100,80]})
WriteResult({ "nInserted" : 1 })
> db.location.find({w:{$near:[1,1]}}) #»á·µ»Ø100¸ö£¬ÀíÄã×î½üµÄµã
{ "_id" : ObjectId("5572a961aba41684d6e8826c"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5572a965aba41684d6e8826d"), "w" : [ 1, 2 ] }
{ "_id" : ObjectId("5572a970aba41684d6e8826e"), "w" : [ 2, 3 ] }
{ "_id" : ObjectId("5572a97aaba41684d6e8826f"), "w" : [ 100, 80 ] }
> db.location.find({w:{$near:[1,1],$maxDistance:2}}) #¿ÉÒÔʹÓÃmaxDistanceÏÞÖÆ£¨near²»ÄÜʹÓÃminDistance£©
{ "_id" : ObjectId("5572a961aba41684d6e8826c"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5572a965aba41684d6e8826d"), "w" : [ 1, 2 ] }?
2. $geoWithin²éѯ
ÐÎ×´µÄ±íʾ£º
? ? 1. $box£º¾ØÐΣ¬Ê¹ÓÃ{$box:[[,],[,]]}±íʾ
? ? 2. $center£ºÔ²ÐΣ¬Ê¹ÓÃ{$center:[[,],r]}±íʾ
? ? 3. $polygon£º¶à±ßÐΣ¬Ê¹ÓÃ{$polygon:[[,],[,],[,]]}±íʾ
Àý×Ó£º
> db.location.find({w:{$geoWithin:{$box:[[0,0],[3,3]]}}}) #¾ØÐÎ
{ "_id" : ObjectId("5572a965aba41684d6e8826d"), "w" : [ 1, 2 ] }
{ "_id" : ObjectId("5572a970aba41684d6e8826e"), "w" : [ 2, 3 ] }
{ "_id" : ObjectId("5572a961aba41684d6e8826c"), "w" : [ 1, 1 ] }
> db.location.find({w:{$geoWithin:{$box:[[1,2],[2,3]]}}})
{ "_id" : ObjectId("5572a965aba41684d6e8826d"), "w" : [ 1, 2 ] }
{ "_id" : ObjectId("5572a970aba41684d6e8826e"), "w" : [ 2, 3 ] }
> db.location.find({w:{$geoWithin:{$center:[[0,0],100]}}}) #Ô²ÐΣ¬100Êǰ뾶
{ "_id" : ObjectId("5572a961aba41684d6e8826c"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5572a970aba41684d6e8826e"), "w" : [ 2, 3 ] }
{ "_id" : ObjectId("5572a965aba41684d6e8826d"), "w" : [ 1, 2 ] }
> db.location.find({w:{$geoWithin:{$center:[[0,0],1000]}}})
{ "_id" : ObjectId("5572a961aba41684d6e8826c"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5572a97aaba41684d6e8826f"), "w" : [ 100, 80 ] }
{ "_id" : ObjectId("5572a970aba41684d6e8826e"), "w" : [ 2, 3 ] }
{ "_id" : ObjectId("5572a965aba41684d6e8826d"), "w" : [ 1, 2 ] }
> db.location.find({w:{$geoWithin:{$polygon:[[0,0],[0,1],[2,5],[6,1]]}}}) #¶à±ßÐβéѯ£¨¸÷¸öµãΧ³ÉµÄ¶à±ßÐεķ¶Î§£©
{ "_id" : ObjectId("5572a970aba41684d6e8826e"), "w" : [ 2, 3 ] }
{ "_id" : ObjectId("5572a961aba41684d6e8826c"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5572a965aba41684d6e8826d"), "w" : [ 1, 2 ] }
> db.location.find({w:{$geoWithin:{$polygon:[[0,0],[0,1],[2,5],[6,1000],[1001,0]]}}})
{ "_id" : ObjectId("5572a970aba41684d6e8826e"), "w" : [ 2, 3 ] }
{ "_id" : ObjectId("5572a97aaba41684d6e8826f"), "w" : [ 100, 80 ] }
{ "_id" : ObjectId("5572a961aba41684d6e8826c"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId