Mongodb mongo$或/$和,带有两个用于地理查询的选择器

Mongodb mongo$或/$和,带有两个用于地理查询的选择器,mongodb,express,mongoose,Mongodb,Express,Mongoose,我正在尝试查询我的mongo以获得两个地理空间查询。我需要发送两次请求吗?可能是我做的不对?无论哪种方式,这里都是秘密- 用户输入一个位置,我可以让它从“bandLocation”或“bandTour”发回数据——每个都是地理空间查询。这是一个有效的请求,但一次只执行一个选择器 router.get('/allbands/:lng/:lat', (req, res) => { quoteGenerator.find( { "bandLoc

我正在尝试查询我的mongo以获得两个地理空间查询。我需要发送两次请求吗?可能是我做的不对?无论哪种方式,这里都是秘密-

用户输入一个位置,我可以让它从“bandLocation”或“bandTour”发回数据——每个都是地理空间查询。这是一个有效的请求,但一次只执行一个选择器

    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)
                }
            )
        });

你的代码看起来不错。您可以考虑将完整的可重复测试用例与数据组合在一起。您的代码看起来很好。你可以考虑把一个完整的可重复的测试用例和数据结合起来。