featureCompatibilityVersion必须为3.4才能使用排序规则

时间:2017-01-20 08:17:32

标签: mongodb geospatial

我需要在我的网站中集成里程/距离搜索,我正在使用MongoDB地理空间索引,但是,我得到一些并且无法解决。下面是我正在使用的架构和命令......

=> db.properties.findOne({},{address:1})
{
    "_id" : ObjectId("585b909c870d907845b695fd"),
    "address" : {
        "postcode" : "W1D 1NN",
        "address1" : "Essence",
        "address2" : "United Kingdom House",
        "county" : "London",
        "town" : "LONDON",
        "latitude" : "51.5160229933117",
        "longitude" : "-0.139088472429092",
        "house_number" : "114",
        "location" : {
            "type" : "Point",
            "coordinates" : [
                -0.139088472429092,
                51.5160229933117
            ]
        }
    }
}

以下是我的索引......

=> db.properties.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "cherrydoorsync.properties"
    },
    {
        "v" : 1,
        "key" : {
            "address.location.coordinates" : "2d"
        },
        "name" : "address.location.coordinates_2d",
        "ns" : "cherrydoorsync.properties"
    }
]

但是,当我在mongo shell中运行以下命令时,我收到错误...

db.properties.aggregate([
   {
     $geoNear: {
        near: { type: "Point", coordinates: [  -2.94379156655216, 54.8905641133194 ] },
        distanceField: "dist.calculated",
        maxDistance: 2,
        includeLocs: "dist.location",
        num: 5
     }
   }
])

错误:

  

断言:命令失败:{           “好的”:0,           “errmsg”:“geoNear命令失败:{ok:0.0,errmsg:\”featureCompatibilityVersion必须为3.4才能使用排序规则。看到   http://dochub.mongodb.org/core/3.4-feature-compatibility。\“,代码:72,   codeName:\“InvalidOptions \”}“,           “code”:16604,           “codeName”:“Location16604”       }:聚合失败       _getErrorWithCode@src/mongo/shell/utils.js:25:13       doassert@src/mongo/shell/assert.js:16:14       assert.commandWorked@src/mongo/shell/assert.js:370:5       DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1319:5       @(壳):1:1

2017-01-20T13:41:27.914+0530 E QUERY    [main] Error: command failed:     {
    "ok" : 0,
    "errmsg" : "geoNear command failed: { ok: 0.0, errmsg: \"The featureCompatibilityVersion must be 3.4 to use collation. See
     

http://dochub.mongodb.org/core/3.4-feature-compatibility。\“,代码:72,   codeName:\“InvalidOptions \”}“,           “code”:16604,           “codeName”:“Location16604”       }:聚合失败:       _getErrorWithCode@src/mongo/shell/utils.js:25:13       doassert@src/mongo/shell/assert.js:16:14       assert.commandWorked@src/mongo/shell/assert.js:370:5       DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1319:5       @(壳):1:1

错误消息中有链接(http://dochub.mongodb.org/core/3.4-feature-compatibility),我按照该链接建议设置setFeatureCompatibilityVersion to "3.4".,我运行该命令并再次收到其他错误

> db.adminCommand( { setFeatureCompatibilityVersion: <"3.4" } )
2017-01-20T13:45:39.023+0530 E QUERY    [main] SyntaxError: expected expression, got '<' @(shell):1:51

请帮我解决这个错误。

2 个答案:

答案 0 :(得分:31)

需要public void ListViewItemClick() { final ListView myList = (ListView) findViewById(R.id.ListviewCollection); myList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long idInDB) { displayToastForID(idInDB); openWerkenInColActivity(); //Toast.makeText(ZaalActivity.this, naam, Toast.LENGTH_LONG).show(); } }); } public void openWerkenInColActivity() { Intent intent = new Intent(ZaalActivity.this, WerkenInColActivity.class); startActivity(intent); } public void displayToastForID(long id) { Cursor cursor = myDB.getRowCollection(id); if (cursor.moveToFirst()){ long IdDB = cursor.getLong(Integer.parseInt(DBAdapter.COL_COLLECTION_ID)); naam = (cursor.getString(Integer.parseInt(DBAdapter.COL_COLLECTION_NAME))); Toast.makeText(ZaalActivity.this, naam, Toast.LENGTH_LONG).show(); } cursor.close(); }

答案 1 :(得分:1)

在mongo shell中使用它

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )