2010-06-17 6 views
2

Mongo의 컬렉션에 대한 사용자 지정 쿼리를 수행하는 함수를 작성하려고합니다. 문제는, 그 기능을 재사용하고 싶습니다.Mongo에서 매개 변수를 허용하는 함수를 실행할 수 있습니까?

var awesome = function(count) { 
    return function() { 
    return this.size == parseInt(count); 
    }; 
} 

는 몽고 콘솔에서 해당 기능을 실행 된 다음이 실행 진행 : 내 생각이 (분명 인위적인)이었다

error: { 
    "$err" : "error on invocation of $where function: 
JS Error: ReferenceError: count is not defined nofile_b:1" 
} 
그러나

db.collection.find(awesome(5)); 

을,이 오류가 발생합니다

그래서 Mongo가 범위를 존중하지 않는 것처럼 보입니다.하지만 그 이유는 확실하지 않습니다. 모든 통찰력은 인정 될 것이다.

는 내가하고 싶은 것을 더 깊이로 이동하려면 :

문서의 모음이 LAT있다/LNG 값 및 I는 오목 또는 볼록 다각형 내의 모든 문서를 찾고 싶어요. 필자는 함수를 작성했지만 이상적으로 함수를 재사용 할 수 있기 때문에 Mongo의 끝에서 실행하는 함수에 폴리곤을 구성하는 점 배열을 전달하려고합니다. Mongo의 지형 공간 쿼리를 살펴 보았습니다. 현재 원과 상자 쿼리를 지원합니다. 좀 더 복잡한 것이 필요합니다.

답변

1

쿼리에 사용하려면 해당 기능을 데이터베이스에 저장해야합니다. 수행

db.system.js.save({_id : "awesome", value : 
... function(count) { 
...  return this.size==count; 
... }}) 
db.collection.find({"$where" : "awesome(5)"}) 

를 파이썬에서 변수를 정의하는 데이터베이스를 기대할 수있는 것보다 당신이 더 이상 쉘에서 뭔가를 정의하고 데이터베이스에 사용할 수 있도록 쉘, 데이터베이스 자체 아니다 그것에 대해 알아.

관련 문제