PouchDB通过ID获取包含特定字符串的文档

7

我希望能够获取包含某个字符串的所有文档,但我似乎找不到解决方法...

例如,我有以下文档 ID:

vw_10
vw_11
bmw_12
vw_13
bmw_14
volvo_15
vw_16

如何获取包含字符串vw_的所有文档?

3个回答

11

使用批量获取API

db.allDocs({startkey: "vm_", endkey: "vm_\ufff0"})
注意:\ufff0是最高的Unicode字符,用作有序字符串范围的标志。

谢谢回复,它起作用了。我可以问一下你从哪里得到了“uff0”部分吗? - Scratch.
1
@Scratch。http://docs.couchdb.org/en/latest/couchapp/views/collation.html#raw-collation - Kxepal
注意:startkeyendkey只能找到以给定序列开头的键。上述函数调用将无法找到'uvw_10'... - Philipp

5
您可以使用 PouchDB 查找插件 API 来查询数据,相较于 allDocs,这个插件更加复杂和完善。使用 PouchDB 查找插件,您可以使用正则表达式搜索运算符来实现您的需求。
db.find({selector: {name: {$regext: '/vw_'}}});

目前它还处于BETA版本,但我们即将使用它发布生产应用程序。到目前为止,它已经非常稳定了。有关PouchDb Find的更多信息,请参见https://github.com/nolanlawson/pouchdb-find


我不得不使用$regex,因为我遇到了这个错误:Error: unknown operator "$regext" - should be one of $eq, $lte, $lt, $gt, $gte, $exists, $ne, $in, $nin, $size, $mod, $regex, $elemMatch, $type, $allMatch or $all - Rehmat
@Rehmat 拼错了 regex,写成了 regext(或者选择器名称在过去被更改了)。 - user3614030
这回答了问题,但如果有人对不区分大小写的搜索感兴趣,请将'/vw_'替换为RegExp(<string>,"i")。 感谢此答案 - Sufian

0

你最好拥有一个带有你想要搜索的关键字的视图。这可以确保该关键字被索引。否则,搜索可能会太慢。


你的意思是类似这样 vw/10、vw/11、vw/13 吗? - Scratch.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接