Sails.js $near 查询不起作用并要求索引
Sails.js $near query does not work and asks for indices
我正在尝试使用 MongoDB 查询 Sails.js 中某个坐标的最近点,但出现以下错误:
{ [MongoError: can't find any special indices: 2d (needs index), 2dsphere (needs index), for: { $near: { $geometry: { type: "Point", coordinates: [ "4.3795912", "51.9985675" ] }, $maxDistance: 1000 } }] name: 'MongoError' }
我确保我在 bootstrap.js 中有这个:
sails.models.location.native(function (err, collection) {
collection.ensureIndex({ coordinates: '2dsphere' }, function () {
cb();
});
});
我的 Location
模型如下所示:
attributes: {
coordinates: {
type: 'json'
},
user: {
model: 'user'
}
}
我的控制器代码如下:
Location.native(function(err, collection) {
var query = {};
collection.find(
query.coordinates = {
$near: {
$geometry: {
type: "Point",
coordinates: [
user.locations[0].lng,
user.locations[0].lat
]
},
$maxDistance : 1000
}
}
).toArray(function(err, result){
if(err) {
console.log(err);
}
else
return res.json(result);
});
});
我很确定我做了我应该做的,但显然我做错了什么或者我忘记了什么。任何人都知道如何让它工作?谢谢
我已经解决了问题。我做错了两件事。首先,每次我调用 sails lift
时,我创建的索引都会被删除,而我并不知道这一点。第二个问题是我的定位点不是正确的 GeoJSON 格式:
{
"type": "Point",
"coordinates": [
4.373654,
51.998715
]
}
我正在尝试使用 MongoDB 查询 Sails.js 中某个坐标的最近点,但出现以下错误:
{ [MongoError: can't find any special indices: 2d (needs index), 2dsphere (needs index), for: { $near: { $geometry: { type: "Point", coordinates: [ "4.3795912", "51.9985675" ] }, $maxDistance: 1000 } }] name: 'MongoError' }
我确保我在 bootstrap.js 中有这个:
sails.models.location.native(function (err, collection) {
collection.ensureIndex({ coordinates: '2dsphere' }, function () {
cb();
});
});
我的 Location
模型如下所示:
attributes: {
coordinates: {
type: 'json'
},
user: {
model: 'user'
}
}
我的控制器代码如下:
Location.native(function(err, collection) {
var query = {};
collection.find(
query.coordinates = {
$near: {
$geometry: {
type: "Point",
coordinates: [
user.locations[0].lng,
user.locations[0].lat
]
},
$maxDistance : 1000
}
}
).toArray(function(err, result){
if(err) {
console.log(err);
}
else
return res.json(result);
});
});
我很确定我做了我应该做的,但显然我做错了什么或者我忘记了什么。任何人都知道如何让它工作?谢谢
我已经解决了问题。我做错了两件事。首先,每次我调用 sails lift
时,我创建的索引都会被删除,而我并不知道这一点。第二个问题是我的定位点不是正确的 GeoJSON 格式:
{
"type": "Point",
"coordinates": [
4.373654,
51.998715
]
}