2012-09-07 48 views
1

我運行此查詢在蒙戈外殼,併成功獲取結果爲什麼使用GeohayStack失敗

db.tablebusiness.find({ "LongitudeLatitude" : { "$near" : [106.772835, -6.186753], "$maxDistance" : 0.053980478460939611 }, "indexContents" : { "$all" : [/^warung/] } }).limit(2); 

我:

{ 
    "_id" : "warung-nasi-nur-karomah__-6.19_106.78", 
    "BuildingID" : null, 
    "Title" : "Warung Nasi Nur Karomah", 
    "InBuildingAddress" : null, 
    "Building" : null, 
    "Street" : "Jl. Arjuna Utara No.35", 
    "Districts" : [], 
    "City" : "Jakarta", 
    "Country" : "Indonesia", 
    "LongitudeLatitudeFromGoogle" : null, 
    "DistanceFromGoogleAddress" : 0.0, 
    "Checkin" : 0, 
    "Note" : null, 
    "PeopleCount" : 0, 
    "Prominent" : 45.5, 
    "CountViews" : 0, 
    "StreetAdditional" : null, 
    "LongitudeLatitude" : { 
    "Longitude" : 106.775693893433, 
    "Latitude" : -6.18759540055471 
    }, 
    "Rating" : { 
    "Stars" : 0.0, 
    "Weight" : 0.0 
    }, 
    "Reviews" : [], 
    "ZIP" : null, 
    "Tags" : ["Restaurant"], 
    "Phones" : ["081380087011"], 
    "Website" : null, 
    "Email" : null, 
    "Price" : null, 
    "openingHour" : null, 
    "Promotions" : [], 
    "SomethingWrong" : false, 
    "BizMenus" : [], 
    "Brochures" : [], 
    "Aliases" : [], 
    "indexContents" : ["restaura", "estauran", "staurant", "taurant", "aurant", "urant", "rant", "ant", "nt", "t", "warung", "arung", "rung", "ung", "ng", "g", "nasi", "asi", "si", "i", "nur", "ur", "r", "karomah", "aromah", "romah", "omah", "mah", "ah", "h"] 
} 

但當我嘗試此查詢與其他搜索多鍵索引我沒有什麼結果

db.runCommand({ geoSearch : "tablebusiness", near : [106.772835, -6.186753], maxDistance : 0.053980478460939611, search : { "indexContents" : { "$all" : [/^warung/] } }, limit : 30 }) 

我得到這個

{ 
     "results" : [ ], 
     "stats" : { 
       "time" : 0, 
       "btreeMatches" : 0, 
       "n" : 0 
     }, 
     "ok" : 1 
} 

這是指數在我收集數據庫

[ 
     { 
       "v" : 1, 
       "key" : { 
         "_id" : 1 
       }, 
       "ns" : "isikotacobacoba.tablebusiness", 
       "name" : "_id_" 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "LongitudeLatitude" : "2d", 
         "Prominent" : -1, 
         "indexContents" : 1 
       }, 
       "ns" : "isikotacobacoba.tablebusiness", 
       "name" : "LongLat_Prominent_indexContents", 
       "dropDups" : false, 
       "background" : false 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "LongitudeLatitude" : "2d", 
         "Prominent" : -1 
       }, 
       "ns" : "isikotacobacoba.tablebusiness", 
       "name" : "LongLat_Prominent", 
       "dropDups" : false, 
       "background" : false 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "indexContents" : 1 
       }, 
       "ns" : "isikotacobacoba.tablebusiness", 
       "name" : "indexContents", 
       "dropDups" : false, 
       "background" : false 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "LongitudeLatitude" : "2d", 
         "indexContents" : 1, 
         "Prominent" : -1 
       }, 
       "ns" : "isikotacobacoba.tablebusiness", 
       "name" : "LongitudeLatitude__indexContents_1_Prominent_-1", 
       "bits" : 22 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "Title" : 1 
       }, 
       "ns" : "isikotacobacoba.tablebusiness", 
       "name" : "Title", 
       "dropDups" : false, 
       "background" : false 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "City" : 1 
       }, 
       "ns" : "isikotacobacoba.tablebusiness", 
       "name" : "City", 
       "dropDups" : false, 
       "background" : false 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "LongitudeLatitude" : "geoHaystack", 
         "indexContents" : 1 
       }, 
       "ns" : "isikotacobacoba.tablebusiness", 
       "name" : "LongitudeLatitude__indexContents_1", 
       "bucketSize" : 0.1 
     } 
] 

格式中使用RunCommand MongoDB的使用如何與geohaystack附加字段mulikey?

回答

1

Geohaystack查詢不支持陣列的附加字段, 只有單個值。當前實施的地理空間索引 和geohaystacks不使用標準查詢和索引代碼。

從MongoDB的geohaystack文檔中的示例( http://www.mongodb.org/display/DOCS/Geospatial+Haystack+Indexing) 僅示出了附加的字段是一個簡單的單個值,而不是在geohaystack查詢一個 數組值。