首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在YDN-DB中使用多个值进行搜索

在YDN-DB中使用多个值进行搜索
EN

Stack Overflow用户
提问于 2014-12-16 04:55:42
回答 1查看 183关注 0票数 0

是否有可能在YDN-DB中找到多个值(如sql关键字)?

代码语言:javascript
复制
    //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);
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-18 14:41:44

您可以使用多查询方法,如最近更新的教程中所述。

基本上,您将为IN子句的每个元素创建迭代器,并将结果连接(联合),如下所示:

代码语言:javascript
复制
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方法:

代码语言:javascript
复制
db.scan(multiQuery, [iterators...]).done(function() {
  db.values('article', keys).done(function(values) {
    console.log(keys, values);
  })
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27497768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档