2014-12-16 5 views
0

YDN-DB에서 여러 값 (예 : sql IN 키워드)을 찾을 수 있습니까?YDN-DB에서 여러 값으로 검색

//simple scenario 
    "SELECT * FROM categories WHERE code IN ('AB','CD','EF','GH','IJ','KL');" 

    var code = "'AB','CD','EF','GH','IJ','KL'"; 
    var key_range = ydn.db.KeyRange.only(code);  
    cacheDb.values('categories','code',key_range).then(function(record){ 
     console.log(record);    
    },function(e){ 
     console.log(e); 
    }); 

답변

1

최근에 업데이트 된 tutorial에서 설명한대로 다중 쿼리 방식을 사용할 수 있습니다.

db.scan(multiQuery, [iterators...]).done(function() { 
    db.values('article', keys).done(function(values) { 
    console.log(keys, values); 
    }) 
}); 
:

var keys = []; 
var multiQuery = function(sec_keys, pri_keys) { 
    var advance = []; 
    var cmp = ydn.db.cmp(pri_keys[0], pri_keys[1]); 
    if (cmp == 1) { // pri_keys[0] > pri_keys[1] 
    if (keys[keys.length - 1] != pri_keys[1]) { 
     keys.push(pri_keys[1]); 
    } 
    advance[1] = true; // advance iter_1 on step 
    } else if (cmp == -1) { // pri_keys[0] < pri_keys[1] 
    if (keys[keys.length - 1] != pri_keys[0]) { 
     keys.push(pri_keys[0]); 
    } 
    advance[1] = true; // advance iter_1 on step 
    } else { // pri_keys[0] == pri_keys[1] 
    if (keys[keys.length - 1] != pri_keys[0]) { 
     keys.push(pri_keys[0]); 
    } 
    advance[0] = true; // advance iter_0 on step 
    advance[1] = true; // advance iter_1 on step 
    } 

    if (keys.length >= 10) { 
    return []; 
    } else { 
    return advance; 
    } 
}; 

그런 다음 scan 방법을 사용하십시오

기본적으로 다음과 같은 결과를, 당신은 IN 절의 각 요소에 대한 반복자를 생성하고 (노동 조합)에 가입