有关云函数数据库查询的一个问题?估计大部用户弄不明白,手册也没写清楚,向大佬请教一下
发布于 6 年前 作者 jie94 3022 次浏览 来自 问答

官方手册云开发 SDK 中描述 _.and() 函数时,有如下介绍:

假设我们对这个 todo 表设计了两个索引 “progress-tags-index” 与 “tags-progress-index”,这两个索引的差别是:前者先以 progress 字段做索引,然后用 tag 字段索引,而后者的组合索引的顺序正好反过来,先查 tag 再查 progress。

现在我用如下语句:

db.collection('todo').where({
  progress: _.gt(50),
  tags: 'cloud'
}).get()

系统如何知道我要动用两个组合索引中的哪一个?我强调一下,JS 语言中的字典类型并不具备顺序性,上面写法并不表明 progress 字段在先。比方改成如下表达方式:

where_expr = {}
where_expr['tags'] = 'cloud'
where_expr['progress'] = _.gt(50)

db.collection('todo').where(where_expr).get()

很明显,无法从 where_expr 获知哪个字段先索引,哪个字段后索引。所以,请教各位,准确、严谨的查询语句应该怎么写?

2 回复

建议官方研发团队来回答,你们从不讲从 mogodb 移植的,也不交代哪些改了,哪些没改,别人没个猜,不厚道哇。

是什么情况下,需要了解索引的先后顺序?

回到顶部