2016-04-05 30 views

cevap

2

Çözüm 1: lookpup maç başarısız olursa pazar yeri "mongodblookup" fişi ile tek sorun var üzerinde buldum

, bir kayıt döndürmez.

Çözüm 2: hayır belge bulursa UJDC bir alan da boş dönecektir edilir -

UJDC - 2 giriş akışından alan - artist_id, çeviri

jsonColl (bu arama için tanımlayıcısıdır) . Aşağıda

kod

import com.mongodb.Mongo; 
import com.mongodb.DB; 
import com.mongodb.DBCollection; 
import com.mongodb.DBObject; 
import com.mongodb.QueryBuilder; 

private Mongo m; 
private DB db; 
private DBCollection coll; 

String getField="xxx"; 
String jsonField="Y"; 



public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException 
{ 

    if (first) { 

     first=false; 
    } 

    Object[] r = getRow(); 

    if (r == null) { 
     setOutputDone(); 
     return false; 
    } 

    Object[] outputRow = createOutputRow(r, data.outputRowMeta.size()); 
    Long artist_id = get(Fields.In, "artist_id").getInteger(r); 
    String translation = get(Fields.In, "translation").getString(r); 

    DBObject query= coll.findOne(QueryBuilder.start("itunesArtistId").is(artist_id).and("translation.translation").is(translation).get()); 

    if (query==null){ 
     jsonField=null; 
    }else{ 
     jsonField="exist"; 
    } 

    get(Fields.Out, "jsonColl").setValue(outputRow, jsonField); 
    putRow(data.outputRowMeta, outputRow); 

    // putRow will send the row on to the default output hop. 
    // 
    return true; 
} 

public boolean init(StepMetaInterface stepMetaInterface, StepDataInterface stepDataInterface) 
{ 
    try { 
      m = new Mongo("127.0.0.1", 27017); 
     db = m.getDB("databasename"); 
     db.authenticate("user", "password".toCharArray()); 
      coll = db.getCollection("artist"); 

     return parent.initImpl(stepMetaInterface, stepDataInterface); 
    } catch(Exception e) { 
     logError("Error connecting to MongoDB: ", e); 
      return false; 
    } 
} 
olduğunu
İlgili konular