2011-12-21 5 views
2

SQL에서는 테이블 모델에없는 필드를 추가하고 쿼리 중에 렌더링 할 수 있습니다. MongoDB는 모델 및/또는 쿼리에서 동일한 작업을 수행 할 수 있습니까? 예를 들어MongoDB 동적 결과

이있다 "방법"의 예 컬렉션에서 문서를 저장하는 것입니다 : find.example.find();이 같은 "평가"문서 결과를 초래

db.example.save(
{ 
"name":"randomValue", 
"random": function(){ return Math.random() }; 
}) 

:

{"name":"randomValue", "random":0.9879878, "_id" : { "$oid" : "4ef1d1…" }} 

(계산할 함수가 반환 된 값으로 바뀝니다.

쿼리에서 함수를 지정하는 것이 가능하면 어떻게 할 수 있습니까?

+0

당신은 임의의 값을 필요 * 당신이 발견()를 호출하거나 설명하기 위해 단지 예입니다 각 * 시간 너의 질문? – milan

+0

예를 들어, 저장시 값을 설정하는 것은 매우 쉽습니다. –

답변

2

현재 레코드 집합에 값을 동적으로 평가하거나 혼합하는 방법은 없습니다.

함수를 저장할 수 있지만 각 문서를 반복하고 원래 함수를 값으로 대체하는 doc.random = db.eval('doc.random')을 호출하여이를 평가해야합니다. 이는 아마도 원하는 것이 아닙니다.

db.system.js에 함수를 저장하고이를 호출하여 수정 된 데이터 세트를 반환 할 수도 있습니다. db.eval을 실행하면 일부 그리기가 발생하므로 map reduce가 더 적합 할 수 있습니다.

체크 아웃 : http://www.mongodb.org/display/DOCS/Server-side+Code+Execution

3

짧은 대답은 : 아니오, 불가능합니다.

이러한 기능은 '프리젠 테이션'의 일부입니다. ui에 데이터를 표시 할 때 대개 ui 모델을 준비합니다. 이 단계에서 모든 함수를 호출하고 클라이언트 언어에서 모델을 확장 할 수 있습니다.

또는 문서에서 일부 값 (일부 기능에 의해 평가되어야 함)이 필요하면 문서 저장 전에이 함수를 호출 할 수 있습니다. 예를 들어, 임의의 값을 저장 쉘 스크립트는 random 필드에 Math.Random 평가 :

random = Math.random(); 
db.example.save(
{ 
    "name":"randomValue", 
    "random": random 
}) 

희망이 정보가 도움이.

관련 문제