内置读取couchdb文档大小的方法?

Sir*_*bin 3 couchdb

我正在尝试使用couchdb作为消息存储,并希望报告消息大小.

理想情况下,阅读_size属性会很好.在最坏的情况下,我可以检查整个文档的JSON的字符串长度.我甚至可能希望将大小用作视图键.

您认为记录文档大小的最佳方法是什么?为什么您认为该方法最好?

Rob*_*son 10

你可以看一看;

function (doc) {
    emit(doc._id, JSON.stringify(doc).length);
}
Run Code Online (Sandbox Code Playgroud)

  • 在这方面包括附件尺寸的任何方式? (3认同)

Mar*_*cio 6

您可以发出HEAD请求:

$ curl -X HEAD -I http://USER:PASS@localhost:5984/db/doc_id
HTTP/1.1 200 OK
Server: CouchDB/1.1.1 (Erlang OTP/R14B03)
Etag: "1-c0b6a87a64fa1b1f63ee2aa7828a5390"
Date: Tue, 17 Jan 2012 21:32:43 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 740047
Cache-Control: must-revalidate
Run Code Online (Sandbox Code Playgroud)

Content-Length标头包含文档的长度(以字节为单位).这非常快,因为您不需要下载完整的文档.

但有一点需要注意:Content-Length是文档的utf-8版本的字节数(参见Content-Type标题); String.length是字符串中16位utf-16 代码单元的数量.

也就是说,他们正在计算不同的东西,字节与代码单元,文件的不同编码,utf-8与utf-16.