이 쿼리는 ReQL에 python과 같은 values
함수가 없다는 사실 때문에 더욱 어렵습니다. 이제 우리는 키 중 하나에 문자열을 포함하는 문서를 찾는 것은 매우 쉽다는 것을 가지고
def values(doc):
return doc.keys().map(lambda x: doc[x])
: 그것은 keys
기능을 가지고있다 그러나 그래서 그냥 values
기능과 같이 할 것을 사용하자
def has_str(doc, str):
return values(doc).map(match(str)).reduce(lambda x,y: x | y)
마지막으로 우리는 모두 함께 넣을 수 있습니다 :
r.table("users").filter(lambda doc: has_str(doc, str))
당신은 이론적으로이 모든 것을 하나의 큰 쿼리에서 할 수 있지만, 나는 다소 복잡한 쿼리를 파기하는 것을 정말로 좋아합니다. 이 접근법에 대한 정말 좋은 점은 각 함수가 작동하지 않으면 아주 간단한 의미 집합을 가지므로 개별적으로 디버깅 할 수 있다는 것입니다.
function values(doc) {
return doc.keys().map(function(key) {
return doc(key);
});
}
function contains(doc, string) {
return values(doc).map(function(val) {
return r.branch(val.match(string), true, false);
}).reduce(function(left, right) {
return left.or(right);
});
}
var query = r.db('database').table('table').filter(function(doc) {
return contains(doc, "some string");
});
query.run().then(function(results) {
console.log(results);
});
개선 환영 : 자바 스크립트에서이 문제를 알아 내려고 여기 자신을 발견 한 사람들을위한