MongoError:"geoNear command failed: { ok: 0.0, errmsg: \"error processing query","code":16604,"codeName":"Location16604"
MongoError:"geoNear command failed: { ok: 0.0, errmsg: \"error processing query","code":16604,"codeName":"Location16604"
我对 mongodb geonear 聚合查询感到沮丧,对于每个响应我都会收到这样的错误:
{"name":"MongoError","message":"geoNear command failed: { ok: 0.0, errmsg: \"error processing query: ns=Lab.assoprofiles limit=100Tree: GEONEAR field=loc maxdist=50000 isNearSphere=1\nSort: {}\nProj: { $pt: { $meta: \"geoNearPoin...\", code: 2, codeName: \"BadValue\" }","ok":0,"errmsg":"geoNear command failed: { ok: 0.0, errmsg: \"error processing query: ns=Lab.assoprofiles limit=100Tree: GEONEAR field=loc maxdist=50000 isNearSphere=1\nSort: {}\nProj: { $pt: { $meta: \"geoNearPoin...\", code: 2, codeName: \"BadValue\" }","code":16604,"codeName":"Location16604"}
我是这样设计这个系列的:
const mongoose = require("mongoose");
var Schema = mongoose.Schema;
var AssoSchema = new mongoose.Schema({
userId:{ type: mongoose.Schema.Types.ObjectId, ref: "User"},
picture : String,
telephone: {
type: String,
unique: false
},
loc: {
type: [Number], // [<longitude>, <latitude>]
index: "2d" // create the geospatial index
},
},{timestamps: true})
var Asso = mongoose.model('AssoProfile', AssoSchema);
module.exports = Asso;
查询是这样的:
const latitude = parseFloat(req.body.latitude);
const longitude = parseFloat(req.body.longitude);
AssoProfile.aggregate([
{
$geoNear: {
near: { type: 'Point', coordinates: [latitude, longitude] },
spherical: true, distanceField: 'distance', maxDistance:7000,
}
}
], function(err, l ){
console.log(JSON.stringify(err));
console.log(l);
})
我不明白为什么这么简单的查询会抛出这个错误。
感谢您的帮助。
我有 运行 您在上面发布的相同代码,但它对我不起作用...而且我认为 index: 2d
不是猫鼬模型中的选项。相反,我创建了这样的索引并为我工作。
const mongoose = require("mongoose")
var Schema = mongoose.Schema
var AssoSchema = new mongoose.Schema({
userId: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
picture : String,
telephone: {
type: String,
unique: false
},
loc: Array,
}, { timestamps: true })
AssoSchema.index({ 'loc': '2dsphere' })
var Asso = mongoose.model('AssoProfile', AssoSchema)
module.exports = Asso;
我对 mongodb geonear 聚合查询感到沮丧,对于每个响应我都会收到这样的错误:
{"name":"MongoError","message":"geoNear command failed: { ok: 0.0, errmsg: \"error processing query: ns=Lab.assoprofiles limit=100Tree: GEONEAR field=loc maxdist=50000 isNearSphere=1\nSort: {}\nProj: { $pt: { $meta: \"geoNearPoin...\", code: 2, codeName: \"BadValue\" }","ok":0,"errmsg":"geoNear command failed: { ok: 0.0, errmsg: \"error processing query: ns=Lab.assoprofiles limit=100Tree: GEONEAR field=loc maxdist=50000 isNearSphere=1\nSort: {}\nProj: { $pt: { $meta: \"geoNearPoin...\", code: 2, codeName: \"BadValue\" }","code":16604,"codeName":"Location16604"}
我是这样设计这个系列的:
const mongoose = require("mongoose");
var Schema = mongoose.Schema;
var AssoSchema = new mongoose.Schema({
userId:{ type: mongoose.Schema.Types.ObjectId, ref: "User"},
picture : String,
telephone: {
type: String,
unique: false
},
loc: {
type: [Number], // [<longitude>, <latitude>]
index: "2d" // create the geospatial index
},
},{timestamps: true})
var Asso = mongoose.model('AssoProfile', AssoSchema);
module.exports = Asso;
查询是这样的:
const latitude = parseFloat(req.body.latitude);
const longitude = parseFloat(req.body.longitude);
AssoProfile.aggregate([
{
$geoNear: {
near: { type: 'Point', coordinates: [latitude, longitude] },
spherical: true, distanceField: 'distance', maxDistance:7000,
}
}
], function(err, l ){
console.log(JSON.stringify(err));
console.log(l);
})
我不明白为什么这么简单的查询会抛出这个错误。 感谢您的帮助。
我有 运行 您在上面发布的相同代码,但它对我不起作用...而且我认为 index: 2d
不是猫鼬模型中的选项。相反,我创建了这样的索引并为我工作。
const mongoose = require("mongoose")
var Schema = mongoose.Schema
var AssoSchema = new mongoose.Schema({
userId: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
picture : String,
telephone: {
type: String,
unique: false
},
loc: Array,
}, { timestamps: true })
AssoSchema.index({ 'loc': '2dsphere' })
var Asso = mongoose.model('AssoProfile', AssoSchema)
module.exports = Asso;