2015-12-01 56 views
1

Rethinkdb文檔有這個例子,以提高GETALL /包含一個二級索引的查詢:如何使用輔助索引爲「載」查詢

// Create the index 
r.table("users").indexCreate("userEquipment", function(user) { 
    return user("equipment").map(function(equipment) { 
     return [ user("id"), equipment ]; 
    }); 
}, {multi: true}).run(conn, callback); 

// Query equivalent to: 
// r.table("users").getAll(1).filter(function (user) { 
//  return user("equipment").contains("tent"); 
// }); 
r.table("users").getAll([1, "tent"], {index: "userEquipment"}).distinct().run(conn, callback); 

我的問題是,如果有一種方法做相同的,但對於用多個標籤查詢。使用輔助索引使這個查詢成爲可能等同於什麼?

r.table("users").getAll(1).filter(function (user) { 
    return user("equipment").contains("tent", "tent2"); 
}); 

回答

1

可能是我們能夠做到這一點

r.table("users").getAll([1, "tent"]).filter(function (user) { 
    return user("equipment").contains("tent2"); 
}); 

因此,建立一個多指數像你一樣,並嘗試getAll第一,所以這部分很高效的索引,然後filter繼續確保equipment包含我們想要的陣列。