MongoDB文本搜索和geoWithin搜索

时间:2015-06-12 14:34:48

标签: mongodb full-text-search geospatial

我知道MongoDB不支持geospatial index$geoWithin同时进行搜索,如here所示。但我看到了使用$near代替$geoWithin的建议。我将$box geometry$geoWithin一起使用,但不会产生任何结果。但是,当我使用$center和{{1}}几何时,它确实有效。可能有什么不对?它不受支持吗?这是一个错误吗?当然,如果我单独应用这些查询条件(文本和地理空间),那一切都有效。

1 个答案:

答案 0 :(得分:1)

尽管在文档中多次提到$geoWithin不需要地理空间索引。我无法使用$box运算符。

这不起作用:

db.getCollection('Article').find({
    "coordinates": {
        $geoWithin: {
            $box: [
                [13.2680001, 49.805786],
                [13.4758465, 49.6776084]
            ]
        }
    },    
    $text: {
        $search: "Lorem ipsum"
    }
})

非常简单的解决方法是使用$gte$lte运算符。

工作解决方案:

db.getCollection('Article').find({
    "coordinates.longitude": { $gte: 13.2680001, $lte: 13.4758465 },
    "coordinates.latitude": { $gte: 49.6776084, $lte: 49.805786 },
    $text: {
        $search: "Lorem ipsum"
    }
})

但是,我不确定此类查询的执行情况。