使用MongoDB中的对象索引返回结果

时间:2017-07-17 14:53:06

标签: mongodb pymongo pymongo-3.x

以下是mongodb中的一个集合。给定开始停止和结束停止时,我需要返回bus_number。约束条件是终点站的索引必须大于起始站的索引。 所以,给出start = 226& end = 229返回值应为1A。 start = 229& end = 226应该什么都不返回。

{
"_id" : ObjectId("59be068"),
"route" : "1A",
"route_patterns" : [
    {
        "route_pattern_id" : "00010001",
        "route_stops" : [
            {
                "stop_id" : "226",

            },
            {
                "stop_id" : "228"
            },
            {
                "stop_id" : "229"
            },
            {
                "stop_id" : "227"
            }
        ]
    }
]}

编辑: 我的结构现在看起来像这样: {
"route":"1A", "route_pattern_id":"00010001", "route_stops":[
{
"stop_id":"226", "stop_number":0 }, {
"stop_id":"228", "stop_number":1 }, {
"stop_id":"229", "stop_number":2 }, {
"stop_id":"227", "stop_number":3 } ] }

这样我现在使用stop_number。不是一个干净的解决方案。

这就是我所做的:

entity_start = db.routes.find({
    "route_patterns.route_stops.stop_id": str(start_stop)
})
dumps(entity_start)
start_buses = [routes['route'] for routes in entity_start]
entity_end = db.routes.find({
    "route_patterns.route_stops.stop_id": str(end_stop)
})
end_buses = [routes['route'] for routes in entity_end]

set_two = set(start_buses)
set_one = set(end_buses)

return dumps(set_one.intersection(set_two))

0 个答案:

没有答案