我尝试使用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()只返回字符串的完全匹配。
我能看到的唯一方法是返回整个数据库,然后遍历它。我真的希望有办法查询部分匹配。
答案 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上打开“增强请求”。
但是根据您的使用情况,如果您以不同方式构建数据库,可能会实现您的目标,可能会为您预先设置的对象创建某种“标记”类别属性,即将对象添加到数据库,以便稍后查询。