NodeJS中如何对CouchDB集合执行查询操作?
解答:Couchbase Node.js SDK 查询集合文档方法
你已经成功通过Node.js SDK建立Couchbase连接,实现了键值方式获取单个文档,关于查询集合所有文档的问题,说明如下:
核心说明
Couchbase的Collection对象主要用于键值对操作(如get、upsert、remove等),如果要执行SQL++(原N1QL)查询,需要通过Cluster对象的query方法来完成,这是集群级别的查询操作。
你尝试的代码问题
你最初的代码有两个问题:
query是异步方法,必须使用await才能获取结果- 直接
SELECT myBucketName.* FROM myBucketName仅能返回文档内容,无法获取文档ID(元数据),加上META().id可同时拿到文档ID和内容
正确的查询方式
你后来找到的代码是可行的,完整写法如下:
var result = await myCluster.query("SELECT META().id, * FROM myBucketName"); // 遍历查询结果 for (const row of result.rows) { console.log(`文档ID: ${row.id}, 内容:`, row); }
针对特定集合的查询
如果文档不在默认集合,而是属于某个Scope下的自定义集合,可以在SQL++语句中指定完整路径:
var result = await myCluster.query("SELECT META().id, * FROM myBucketName.myScope.myCollection");
补充提示
- 执行查询时可添加选项参数,比如设置超时、一致性级别等:
var result = await myCluster.query("SELECT META().id, * FROM myBucketName", { timeout: 10000, scanConsistency: couchbase.QueryScanConsistency.RequestPlus });
- 数据量大时建议添加
WHERE条件过滤,避免全桶扫描导致性能问题。
内容的提问来源于stack exchange,提问作者gnitsuk
相关产品推荐
相关产品推荐

