Javascript Mongoose查询,带$near$或其他字段
我试图通过查询$或在不同字段(包括有问题的$near查询)返回文档 模式Javascript Mongoose查询,带$near$或其他字段,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图通过查询$或在不同字段(包括有问题的$near查询)返回文档 模式 locationSchema{ ... beacon: String, access_point: String, gps: [], ... } locationSchema.index({ gps: '2dsphere' }); 查询 locations.find({ '$or': [ { gps: {
locationSchema{
...
beacon: String,
access_point: String,
gps: [],
...
}
locationSchema.index({ gps: '2dsphere' });
查询
locations.find({
'$or': [
{
gps: {
'$near': {
'$geometry': {
type: 'Point',
coordinates: [
13.1313131,
-4.444444
]
},
'$maxDistance': 50,
distanceField: 'distance',
spherical: true
}
}
},
{
access_point: '88:A6:BB:26:95:11'
},
{
access_point: '88:A6:C6:26:CC:21'
}
]
},
function(err,locations){
//DosomethingwithfoundLocations
});
如果我只使用$near
输入执行查询,则会返回一个位置,如果我只使用访问点的列表执行查询,则会返回一个位置,但在同时运行两个查询时不会返回
我假设这是一个bug,但是我是否可以让这种类型的查询正常工作
谢谢根据文档,这不受支持。您可以阅读更多关于它的信息:
$or支持地理空间子句,但near子句除外(near子句包括$nearSphere和$near)$或不能与任何其他子句一起包含near子句
但是,您可以使用并传入center
操作符来实现相同的目标。请记住,geoinsin
不会对生成的数组进行排序。我也有同样的问题,我们能不能一起使用near和其他元素进行查询?谢谢,我似乎错过了文档中的语句。作为替代方案,执行两个查询很简单。