2012-03-24 3 views
0

나는 디자인을 결정하려고합니다.PHP 드라이버를 사용하여 MongoDB에 저장된 함수를 만드는 방법

MongoDB 또는 PHP 드라이버에 익숙하지 않지만 mongodb가 사용하는 저장 함수의 JavaScript 구문에 흥미가 있습니다.

PHP를 사용하여 MongoDB 스토어드 함수를 생성 할 수있는 방법이 있는지 말해 줄 수 있습니까?

MongoDB를 저장 기능을 만들기위한 나의 참조 : 당신이 server-side functions을 참조하고 같은 https://github.com/mongodb/mongo/blob/master/jstests/storefunc.js

답변

2

그것은 소리.

만들기는/서버 측 기능을 업데이트하면 system.js 모음을 업데이트하는 것만 큼 쉽습니다 :

db.system.js.save({ _id : "foo" , value : function(x , y){ return x + y; } }); 

여기서 문제가 정말 서버 측 기능 "을 사용하여"입니다. 먼저 어색한 업데이트/삽입 문을 써야합니다. 둘째, 이들은 저장 프로 시저가 아닙니다. 그것들은 서버에서 실행하기 위해 컴파일되지 않습니다.

쿼리를 위해 서버 측 함수를 사용하는 경우 해당 함수의 내부에 인덱스를 사용하지 않습니다. 플러스 그것은 eval 기능을 사용하여 DB를 잠글 수 있습니다.

또한 트리거가 없으므로 트리거에도 사용할 수 없습니다.

전반적으로 서버 측 기능에는 많이 사용되지 않으므로 문서에서 3 단락을 차지할 수 있습니다.

고급 쿼리 기능이 필요한 경우 새 집계 프레임 워크를 살펴보십시오. 어떤 유형의 트리거를 찾고 있다면 자신의 롤을 굴려야합니다. 저장 프로 시저를 찾고 있다면 실제로는 그렇지 않습니다.

+0

흠. 그런 엉망이라면 왜 실제로 존재합니까? 서버 측 기능 만 사용하여 문제를 해결할 수있는 시나리오가 있습니까? – antitoxic

+0

나는 이것이 다음 저장된 프로 시저 일 수 있다고 생각할 때 만들어지는 것들 중 하나라고 생각한다. 그러나 꿈은 실제로 자바 스크립트 인터프리터의 인스턴스를 한 번에 하나만 가질 수 있다는 사실에 의해 정말로 파멸되었습니다. MongoDB는 불과 몇 년 밖에되지 않았으며 실제로 문서를 업데이트 할 수있는 충분한 사람이 없다는 점을 기억해야합니다. –

+0

한 가지 더 : ** mapReduce **에 대해 읽었습니다 ** 설명 된 모든 오류는 ** mapReduce **에도 적용됩니까? – antitoxic

관련 문제