说
有什么好处emit([doc.key1,doc.key2], 1);
VS
emit([doc.key1,doc.key2], doc);
并通过?include_docs = true
调用doc这实际上会保存在couchdb空间(视图大小更短)吗?此外,由于未集成doc,因此CPU会受到影响 在发射?
优点和缺点是什么,何时使用其中一个。
答案 0 :(得分:3)
需要使用emit(..., 1);
来减少_sum
,_count
或_stats
等功能,因为它们需要一个数字才能使用。
使用emit(..., doc);
将真正复制文档,因此它将存储在磁盘上的视图文件中。
使用emit(..., null);
不会复制文档,但由于couchdb知道哪个doc
是emit()
的来源,因此?include_docs=true
可以“重新附加”。基于密钥的查找速度稍慢,但不会造成任何伤害。
有关此主题的更多信息,请参阅the wonderful documentation。
我的建议:
emit(..., 1)
,不使用时emit(..., null)
。emit(..., doc);
有好处。一个很酷的技巧是链接视图中的其他文档而不是当前doc
与emit(..., { _id : doc.commentId })
。