Phi*_*lip 5 map couchbase emit
我已经阅读了一些示例代码(特别是来自Couchbase模型视图演示项目链接),并意识到map()函数是如此奇怪.
function(doc, meta) {
if (doc.type == "beer" && doc.name){
emit(doc.name, null);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么emit函数的值为null,但GetView("啤酒","啤酒")的结果是完美的值?
请帮帮我!
在couchbase中,通常视图的结果集是在后台构建的.如果您有例如每个4Kb大小的100万个文档而没有任何视图,那么它需要~4Gb的磁盘.当您使用地图功能创建视图时
function(doc, meta) {
emit(doc.name, doc);
}
Run Code Online (Sandbox Code Playgroud)
因此,视频结果需要在磁盘上额外增加4Gb,因为视图结果是单独存储的.在大多数情况下(如果使用param查询视图Stale=Ok),couchbase返回"预编译"记录集的结果,couchbase不会扫描每个查询的所有文档.
因此,在map函数中发出null可用于防止磁盘空间使用,并且还可以提高索引过程的速度.
"当GetView("啤酒","啤酒")的结果完全获得价值时,关于沙发基地魔术的第二个问题.Couchbase get(key)和getMulti(keys)操作非常快.因此,当您查询发出null它的视图时,它不仅会返回nulls,还会返回文档ID.然后,您可以手动使用getMulti该文档ID数组来获取doc的值,或者在某些SDK中,调用的查询参数IncludeDocs将自动执行相同的操作.
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |