2012-07-27 66 views
2

我嘗試使用正則表達式,並沒有返回任何結果:如何查詢ScriptDb的部分匹配?

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中的查詢()將只精確返回的字符串相匹配。

我能看到的唯一方法是返回整個數據庫,然後遍歷它。我真的希望有一種方法來查詢部分匹配。

回答

1

ScriptDb當前不支持字符串中的部分匹配。根據數據你可以使用anyOf方法:

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

謝謝@eric。需要在公司名稱中搜索「質量」,並返回「質量Rancid肉類」,「優質擦鞋」等。 – Weehooey 2012-07-31 00:03:58

0

我不認爲這是可能的。您可以在issue tracker上打開「增強請求」。

但是,根據您的使用情況,如果您對數據庫進行了不同的結構化,可能會爲您的對象創建某種「標籤」類別屬性,即事先設置的對象數據庫,所以你可以稍後查詢它。

+0

感謝您的回覆遍歷結果。我所考慮的部分匹配類型是針對公司名稱 - 這不是用部分匹配輕鬆複製的功能。 – Weehooey 2012-07-28 17:51:24

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"); 
}