2012-04-18 2 views

답변

2

지금까지 내가 가장 쉬운 방법은 적응하는 것을 발견 링크 된 SO, 무언가 같이) (db.eval으로 pymongo.code.Code 클래스를 사용하여 응답 :

db.eval(Code("function() {" 
      "coll.find({}, {field1: 1, field2: 2})" 
      ".forEach(function(doc) {" 
      " doc.field1 += doc.field2;" 
      " coll.save(doc);" 
      " });" 
      "}")) 

당신은 선택적으로 저장할 수 있습니다 JS의 db.system.js.save({_id:'myfunc', value: function(){...}}); 와 몽고 쉘에서 서버 스크립트와 db.eval(Code('return myfunc()'))

+1

현재 릴리스의 MongoDB (2.0.x 및 그 전 버전)에서는 서버에서 1 개의 자바 스크립트 프로세스 만 동시에 실행할 수 있습니다. 이 특정 기능은 매우 빠르지 만 Map-Reduce 작업이 동시에 실행되는 경우이 기능을 차단할 수 있습니다 (또는 그 반대). 이러한 이유로 서버 측 자바 스크립트는 일반적으로 거의 사용되지 않습니다. – dcrosta

+0

주의 해 주셔서 감사합니다. 그것을 명심하십시오. – richard

-2
Col.update({}, {'$set': {'field1': field1 + field2}) 

빈 {} 선택 기준, 또는 where 절입니다.

+0

와 파이썬에서 실행 내가 필드 1과 FIELD2 주위에 따옴표가없는 이유에 혼란 스러워요. 이들은 이전 쿼리에서 정의되지 않습니다. – richard

+0

이렇게하려면 문서를 쿼리하고 응용 프로그램 코드에서 필드 연결을 수행해야합니다. MongoDB는 현재이 서버 측을 처리 할 수 ​​없습니다 (이 기능 요청을 구현하는 과정을 추적하기 위해 https://jira.mongodb.org/browse/SERVER-4079 참조). – dcrosta

+0

명확히 말하면, 연결 대신 합계를 의미했습니다. mysql에서 CONCAT (field1, field2)가되지만 같은 차이가 있습니다. – richard