你如何查询ScriptDb的部分匹配?

时间:2012-07-27 21:00:41

标签: google-apps-script

我尝试使用RegEx并且没有返回任何结果:

function findRecord() {
  var db = ScriptDb.getMyDb();
  var toFind = /Quality/i;
  var results = db.query({companyName: toFind});
  while (results.hasNext()) {
    var result = results.next();
    Logger.log(Utilities.jsonStringify(result));
  }
}

从我所看到的,ScriptDb的query()只返回字符串的完全匹配。

我能看到的唯一方法是返回整个数据库,然后遍历它。我真的希望有办法查询部分匹配。

3 个答案:

答案 0 :(得分:2)

尝试使用匹配方法迭代结果

function testQuery() {      
  var db = ScriptDb.getMyDb();
  var results = db.query({});
  var start = new Date();
  while (results.hasNext()) {
  var result = results.next();
  if (result.companyName.match(/qual.*/i)){
  Logger.log(Utilities.jsonStringify(result));
   }
  }
  var endTime = new Date();
  Logger.log("time is " + (endTime.getTime() - start.getTime()) + "ms");
}

答案 1 :(得分:1)

ScriptDb目前不支持字符串中的部分匹配。根据数据,您可以使用anyOf方法:

var results = db.query({
  companyName: db.anyOf(['Quality', 'quality'])
});

答案 2 :(得分:0)

我认为这是不可能的。您可以在issue tracker上打开“增强请求”。

但是根据您的使用情况,如果您以不同方式构建数据库,可能会实现您的目标,可能会为您预先设置的对象创建某种“标记”类别属性,即将对象添加到数据库,以便稍后查询。