Mongodb mongo$或/$和,带有两个用于地理查询的选择器
我正在尝试查询我的mongo以获得两个地理空间查询。我需要发送两次请求吗?可能是我做的不对?无论哪种方式,这里都是秘密- 用户输入一个位置,我可以让它从“bandLocation”或“bandTour”发回数据——每个都是地理空间查询。这是一个有效的请求,但一次只执行一个选择器Mongodb mongo$或/$和,带有两个用于地理查询的选择器,mongodb,express,mongoose,Mongodb,Express,Mongoose,我正在尝试查询我的mongo以获得两个地理空间查询。我需要发送两次请求吗?可能是我做的不对?无论哪种方式,这里都是秘密- 用户输入一个位置,我可以让它从“bandLocation”或“bandTour”发回数据——每个都是地理空间查询。这是一个有效的请求,但一次只执行一个选择器 router.get('/allbands/:lng/:lat', (req, res) => { quoteGenerator.find( { "bandLoc
router.get('/allbands/:lng/:lat', (req, res) => {
quoteGenerator.find(
{
"bandLocation.geometry":
{ $near :
{
$geometry: {
type: "Point",
coordinates: [parseFloat(req.params.lng), parseFloat(req.params.lat)]
},
$maxDistance: 160934,
}
}
},
)
.then(
function(bands){
res.send(bands)
}
)
});
我尝试使用$or和$and操作符,但它没有返回任何内容。这是我到目前为止使用$or运算符的代码
router.get('/allbands/:lng/:lat', (req, res) => {
quoteGenerator.find(
{
$or : [
{
"bandLocation.geometry":
{ $near :
{
$geometry: {
type: "Point",
coordinates: [parseFloat(req.params.lng), parseFloat(req.params.lat)]
},
$maxDistance: 160934,
}
}
},
{
"bandTour.geometry":
{ $near :
{
$geometry: {
type: "Point",
coordinates: [parseFloat(req.params.lng), parseFloat(req.params.lat)]
},
$maxDistance: 160934,
}
}
}
]
}
.then(
function(bands){
res.send(bands)
}
)
});
你的代码看起来不错。您可以考虑将完整的可重复测试用例与数据组合在一起。您的代码看起来很好。你可以考虑把一个完整的可重复的测试用例和数据结合起来。