Pouchdb如何使用键来细化查询?

时间:2013-04-03 03:29:52

标签: view map key pouchdb

在couchdb中,我有一个非常简单的map函数,因此我可以有效地通过tripid查找列表:

// by_tripid.js
function (doc) {

    if (doc.type == "list") {

        for (var tripid in doc.tripids) {
            emit(doc.tripids[tripid], null)
        } 
    }
}

目的是通过tripid索引列表。并且能够通过指定密钥(tripid)来检索tripid列表。

在Pouchdb中,我可以在db.query调用中使用大致相同的map函数。

但是,我不希望最终返回所有列表,然后通过tripid过滤它们。这似乎效率很低。我不确定Pouchdb的视图技术。视图是在查询时创建和使用的,所以我猜Pouchdb并没有真正应用地图来创建索引。我想这就像Couchdb中的临时视图,因此效率可能不高。

非常感谢一些专家意见。

谢谢,马特

2 个答案:

答案 0 :(得分:2)

有一个开放的issue on github来实现增量视图。

你是对的 - 现在PouchDB每次调用query时都会对数据库中的每个文档运行map-reduce,因此性能不佳。对于小型数据库,这很好,但显然这对于​​更大的dbs来说是一个问题。

答案 1 :(得分:1)

PouchDB的query接口supports传递options.key。它将在mentioned in the API docs下次发布。

  • 如果您要连接到远程沙发,它会将参数传递到远程视图,因此可以通过沙发本身进行优化。
  • 对于本地数据库optimization is ongoing,但在登陆时不会更改界面。道德:只要使用界面,除非你碰到表演墙,否则不要担心它。

同样有意义的是量化“有多大”的问题是performance suite issue