假设有个旅行团表和旅行线路表,每个旅行团都关联一个旅行线路。一个旅行线路下有多个不同时间的旅行团。我想要查询在某个时间有哪些旅行线路。我能想到的查询方式只有下面这种。
var groupTemp = db.collection(旅行团).where({出发时间: 某时间}).getTemp()
db.collection(groupTemp, 旅行线路).where("旅行线路.name == '北京'").field("旅行线路").distinct().get().then(res => {
console.log(res)
})
是用distinct来排除相同的旅行线路。只要这个旅行线路下有某个团的时间符合要求,最终展示的是搜索出来的所有旅行线路。
这种方法是用到了distinct排除算法,而不是直接搜索的线路(我不知道是否能直接搜索线路),我的这种搜索方法不知道会不会很慢引发全表遍历?有没有更好的查询方法可以满足这个需求?
Javin (作者)
旅行线路里面有多个时间的旅行团。所以时间条件在旅行团上。然后搜索有哪些旅行线路可以出发。
2023-08-06 22:18
Javin (作者)
有可能旅行线路里有3个团同时满足条件,但是也只展示一个旅行线路。我之前想过把旅行团的数据嵌入到旅行线路里,比如加一些数组索引,这样直接查询旅行线路里的数组,来判断有没有达成条件,但是这样也带来一些问题,1:带来更多的存储量,2数组索引的速度不如普通索引,3每次添加新的旅行团的时候需要写两次数据,先添加一次旅行团,然后再把旅行团的信息添加到旅行线路的数组中,4旅行团数据发生变化要更新旅行线路的数组,我上面用的distinct方法可以满足这种查询需求,而且不需要这么复杂的更新操作,占用空间也少,但是就是不知道查询性能如何,不知道是否会引发全表遍历。
2023-08-06 22:29