如何使用geoNear命令查询mongoDB中的查询来查询日期范围的位置?

时间:2012-09-16 03:29:12

标签: mongodb geospatial

我用的是发现没关系:

{
    $and:[
        {"online":1},
        {"uptime":{$gte: new Date(2012,8,16,2,51)}}
    ]
}

以下命令也没关系:

{
    geoNear : "Driver", 
    near : [120.105148,30.447977 ],
    num : 100,
    spherical : true,
    maxDistance :500/6378,
    query:{"online":1}
}

但是我使用geoNear命令和Geospatial索引,我无法得到任何东西:

{
    geoNear : "Driver", 
    near : [120.105148,30.447977 ],
    num : 100,
    spherical : true,
    maxDistance :500/6378 ,
    query:{
        $and:[
            {"online":1},
            {"uptime":{$gte: new Date(2012,8,16,2,51)}}
        ]
    }
}

要求是: 我想让在线客户在10分钟内更新位置,怎么办? 我创建了名为“pos”的地理空间索引,包括列:正常运行时间和在线

感谢。

2 个答案:

答案 0 :(得分:0)

您不需要$和查询。如果添加两个字段,则仅返回符合这两个条件的文档。

试试这个:

db.runCommand(
    {
        geoNear : "Driver", 
        near : [120.105148,30.447977 ],
        num : 100,
        spherical : true,
        maxDistance :500/6378 ,
        query: { "online": 1,
                 "uptime": {$gte: new Date(2012,8,16,2,51)}

        }
    }
)
只有当你想在同一个字段上有两个条件,或者你想要制定涉及$和$或的更复杂的逻辑查询时,才需要

$和。有关详细信息,请参阅$and documentation

答案 1 :(得分:0)

先起作用; 我使用$或代替$,它也无法工作,我需要使用$或; 现在,我添加了一个Millisecond(长类型)列,它从Date列转换,我更改了Date列,如下所示,它工作正常:

{
geoNear : "Driver", 
near : [120.105148,30.447977 ],
num : 100,
spherical : true,
maxDistance :500/6378 ,
query:{
    $or:[
        {"online":2},
        {"online":1,"uptimestap":{$gte: 1348156800000}}
    ]
}
}