2014-02-06 46 views
0

我有這個錯誤,當我嘗試查詢使用$ geoWithin幾何形狀或$ geoIntersects

error: { "$err" : "invalid operator: $geoWithin", "code" : 10068 } 

我嘗試使用mongo v2.4.9來關注this example(在linux mint上,我必須說我無法更新到v2.4.9,所以我手動將/ usr/bin /中的二進制文件替換爲latest release中的二進制文件,我運行mongod - 之後升級)


以下是示例中的代碼:

s = db.shapes 

s.insert({_id: "P1", shape: {type: "Point", coordinates: [2,2] } }) 
s.insert({_id: "P2", shape: {type: "Point", coordinates: [3,6] } }) 
s.insert({_id: "Poly1", shape: {type: "Polygon", coordinates: [[ [3,1], [1,2], [5,6], [9,2], [4,3], [3,1] ]] } }) 
s.insert({_id: "LS1", shape: {type: "LineString", coordinates: [ [5,2], [7,3], [7,5], [9,4] ] } }) 

s.ensureIndex({shape: "2dsphere"}) 

BOX = {type: "Polygon", coordinates: [[ [0,0], [3,0], [3,3], [0,3], [0,0] ]] } 

s.find({shape: {$geoIntersects: {$geometry: BOX}}}, {_id:1}) 

那麼我:

error: { "$err" : "invalid operator: $geoIntersects", "code" : 10068 } 

s.find({ shape : { $geoWithin : { $box : [ [ 0 , 0 ] , [ 100 , 100 ] ] } } }) 

那麼我:

error: { "$err" : "invalid operator: $geoWithin", "code" : 10068 } 

這在OS X上正常工作與蒙戈2.4。 3

+0

可以請你出示代碼 – meda

回答

1

我認爲你的問題是版本本身。檢查蒙戈由於「$ geoIntersects」扔語法錯誤不存在,它是由$變爲相交於$ geoIntersects所以我會嘗試使用運行相同的代碼:

s.find({shape: {$intersects: {$geometry: BOX}}}, {_id:1}) 

如果你有舊它會工作的版本。 $ geoWithin存在相同的問題,Mongo未找到它。檢查您的版本

version() 

我敢肯定,這是一個安裝問題,我在2.4.7嘗試這個代碼和它的作品,它不是做一個老版本,我不得不切換到$相交

+0

是的,這可能是一個版本問題。我有正確版本的mongo正在運行,但可能仍舊是舊數據庫的問題。我設法刪除我的數據庫重置所有內容,現在它可以工作。 –

+0

您是否嘗試運行$ intersects?數據庫本身可能屬於版本內部,我不知道這個細節,它很高興知道。 –

+0

我沒有嘗試,我不能嘗試,因爲我刪除了所有以前的數據庫......但它可能是這樣的。 –