说我需要一个(自动)升级脚本来重置所有用户'平衡如果它<< s< 0
我想运行一个java代码:
我知道如何使用&CouchbaseClient.createDesignDoc'来创建视图。以及如何使用View / Query Java API查询它
我缺少的是两个问题:
如何将该视图发布到生产中?目前,视图是在开发模式下创建的,因此只扫描“用户”的子组。文件
如何确保创建视图后,它将被编入索引所有数据,包括当前在Couchbase上的数据?
< / LI> 醇>由于
的Eyal
答案 0 :(得分:3)
我很乐意回答我自己的问题,希望能帮助其他人
1。
在&#34;生产模式&#34;中创建视图你创建它的任何名称,但名称以&#34开头; dev _&#34; (!)---我没有找到任何适当的文件给这个小小的噱头
所以这将是你的代码:
// Production Mode Design Doc - no dev_ prefix in name!
DesignDocument designDoc = new DesignDocument("Users"); // not "dev_Users" !
ViewDesign viewDesign = new ViewDesign("NegativeBalance", mapFunction);
designDoc.getViews().add(viewDesign);
cbClient.createDesignDoc(designDoc);
2.
适用于couchbase 3.0及更新版
为了确保查询视图并让所有结果等待,视图的陈旧属性为FALSE
View view = client.getView("Users", "NegativeBalance"); // production Design Doc
Query query = new Query();
query.setStale(Stale.FALSE); // Read all data
这很有用(是的,陈旧= FALSE是性能打击)
适用于Couchbase 2.x及更早版本
您的更新需要使用stale = FALSE和PersistTo标志
client.ExecuteStore(StoreMode.Set, key, val,
Couchbase.Operations.PersistTo.One,
Couchbase.Operations.ReplicateTo.Zero);
希望有所帮助
的Eyal