The SELECT
命令非常简单。批量写入有点复杂。一般来说,您将使用一些视图来检索需要更改的文档,然后您将使用_bulk_docs http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API用于一次发送所有更改的 API。
另外,请咨询有关视图的文档 http://wiki.apache.org/couchdb/HTTP_view_API有关如何发出查询的详细信息。这包括排序、分组等。
SELECT COUNT(*) FROM products WHERE price < 20.00;
Map
function (doc) {
if (doc.price < 20) {
emit(doc.price);
}
}
Reduce
_count
如果您需要使用任意数量(而不仅仅是 20),那么您需要在所有情况下发出价格,并使用startkey
and endkey
缩小结果集范围。
SELECT category, SUM(price) FROM products GROUP BY category;
Map
function (doc) {
emit(doc.category, doc.price);
}
Reduce
_sum
该地图函数本质上使用类别作为键,价格作为键/值对中的值。减少功能会将每个不同键的价格相加。
UPDATE products SET price = 19.99 WHERE price = 20.00;
Map
function (doc) {
if (doc.price == 20) {
emit(doc.price);
}
}
一旦您的应用程序提取该视图的内容,您将在应用程序代码中执行所有操作,然后通过以下方式将结果发送回数据库:_bulk_docs
API.
DELETE FROM products WHERE expires_at <= NOW();
Map
function (doc) {
emit(doc.expires_at);
}
根据您存储日期时间值的方式,您可能需要调整地图功能以及对视图的查询。使用时间戳(JS 使用毫秒而不是秒)可能是实现此目的的最快方法。设置查询后,您将向每个文档添加一个新字段。_deleted: true
。一旦您将此列表发送回数据库(再次使用_bulk_docs
) 所有指定的文档将被删除。