我想从 Couchbase 存储桶中异步读取大量文档。这是我的代码:JsonDocument student = bucketStudent.get(studentID);问题是对于包含很多 studentID 的大型数据文件,获取这些 studentID 的所有文档需要很长时间,因为该get()方法是针对每个 studentID 调用的。是否可以将学生 ID 列表作为输入并返回学生列表的输出,而不是为每个学生 ID 获取单个文档?
3 回答
![?](http://img1.sycdn.imooc.com/545864490001b5bd02200220-100-100.jpg)
米脂
TA贡献1836条经验 获得超3个赞
AFAIK couchbase SDK 没有用于批量get
操作的本机功能。
node.js SDK 有一个getMulti
方法,但它基本上是对数组的迭代,然后get()
为每个元素触发。
我在我的应用程序中发现该key-value
方法仍然比SELECT *
主索引更快,但 N1QL 查询非常接近(在 couchbase 5.x 上)。
只是一个快速提示:如果您有很多 id 需要获取并且您决定使用 N1QL 查询,请尝试将该列表拆分为更小的块。它加快了查询速度,您实际上可以更好地管理错误并避免出现一些令人讨厌的超时。
![?](http://img1.sycdn.imooc.com/545865470001bf9402200220-100-100.jpg)
ITMISS
TA贡献1871条经验 获得超8个赞
如果您正在运行查询节点,则可以为此使用 N1QL。您的查询将如下所示:
SELECT * FROM myBucket USE KEYS ["key1", "key2", "key3"]
实际上,您可能会将字符串数组作为参数传入,如下所示:
SELECT * FROM myBucket USE KEYS ?
您的存储桶需要一个主索引,否则这样的查询将不起作用。
添加回答
举报
0/150
提交
取消