我一直在尝试创建一个猫鼬模型,我可以在其中创建一个geojson位置字段并根据位置查询记录,但我也希望自动包含位置字段的记录。
我甚至将sparse
条件设置为true以确保我可以创建空位置字段,但调用$near
查询会产生此错误:
unable to find index for $geoNear query
我试图找到如何设计此查询的答案,感谢任何帮助。
这是我的模特:
var EventSchema = new mongoose.Schema({
loc: {
"type": { type: String, default: 'Point' },
coordinates: [Number]
},
pos: Number,
active: Boolean
});
EventSchema.index({ loc: '2dsphere' }, { sparse: true });
这是查询:
exports.index = function (req, res, next) {
Event
.find({ active: true })
.near('loc', { center: point, spherical: true, maxDistance: 5000, distanceMultiplier: 6378.1 })
.sort('pos')
.limit(6)
.lean(true)
.exec(function (err, events) {
if(!events) {
res.status(400).json(err || {status: false, message: 'No Events'});
}
else
res.status(200).json(events);
});
}
答案 0 :(得分:0)
尝试使用此架构:
var EventSchema = new mongoose.Schema({
loc: {
"type": [ Number ]
, index: '2dsphere'
}
, pos: Number
, active: Boolean
});