我的架构看起来像这样:
var UserSchema = new Schema({
name: {type : String, required: true},
location_a: {type: [Number], default: [0,0], index: '2dsphere'},
location_b: {type: [Number], default: [0,0], index: '2dsphere'}
});
我的搜索输入有一个位置和距离。现在我想让位置_a或location_b靠近搜索位置的用户。
我尝试过这样的查询:
query = query.and([
{ $or: [
query.where('location_a').near({
center: {type: 'Point', coordinates: [long, lat]},
maxDistance: distance * 1000, spherical: true
}),
query.where('location_b').near({
center: {type: 'Point', coordinates: [long, lat]},
maxDistance: 100 * 1000, spherical: true
})
]}
]);
但它使我的App崩溃:“RangeError:超出最大调用堆栈大小”
答案 0 :(得分:0)
我在查询中使用了错误的格式。这就是你如何做到的。
query = query.and([
{ $or: [
{
"at_student_location": {
"$near": [12.5386, 41.884],
"$maxDistance": 1000
}
}
,
{
"at_home_location": {
"$near": [12.5386, 41.884],
"$maxDistance": 1000
}
}
]}
]);
问题是mongo每个查询只接受一个geoNear表达式,所以不可能这样做。