マイル/距離検索を自分のWebサイトに統合する必要があり、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
}
}
])
エラー:
assert:コマンドが失敗しました:{"ok":0、 "errmsg": "geoNearコマンドが失敗しました:{ok:0.0、errmsg:\"照合を使用するにはfeatureCompatibilityVersionが3.4である必要があります。 http://dochub.mongodb.org/core/3.4-feature-compatibility 。\ "、code: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 @(Shell):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 。\ "、code: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 @(Shell):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
このエラーの解決にご協力ください。
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
が必要
これをmongoShellで使用します
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )