MongoDB를 포함하여 완전히 스크립트 된 환경의 가상 기계 (CentOS)가 있습니다. 내 컬렉션에서 자동 증가 ID 열에 대한 요구 사항이 있고 mongoDB 설명서의 지침에 따라 카운터 컬렉션과 해당 컬렉션을 업데이트하는 함수를 사용했습니다. http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/이MongoDB에서 쉘 스크립트를 사용하여 기능을 설치하십시오.
내가 너무 내 삽입 함수를 호출 이것을 몽고 쉘에서 작업을 얻고 순서를 증가 할 수 있고 나는 이제 VM 프로비저닝의 일환으로 스크립트를 찾고 있어요 :
전체 세부 사항은 여기에서 찾을 수 있습니다 하지만 함수 부분을 다루는 방법을 잘 모르겠습니다.
mongo audit --eval "db.counters.insert({_id: 'sequence',seq: 0})"
다음 내가 system.js 컬렉션에 내 함수를 추가합니다 :
mongo audit --eval "db.getCollection('system.js').save({_id:'getNextSequence', value:'function getNextSequence(name) { var ret = db.counters.findAndModify({ query: { _id: name }, update: { $inc: { seq: 1 } }, new: true }); return ret.seq; }'})"
지금 내가하려고 저장된 스크립트를로드
나는 사용하여 내 bash는 스크립트에서 카운터 수집을 만들었습니다 :
mongo audit --eval "db.loadServerScripts()"
이 나에게 오류 제공 :
를3210SyntaxError: Unexpected token
나는이 잘못된 방향으로 가고 있습니까? 내 컬렉션에 삽입 할 때마다 호출 할 수있는 함수를 설치하는 또 다른 방법입니까?
내 삽입은시나의 웹 서비스에서 실행되는 일부 JRuby를 코드에서 실행이과 유사합니다 : 어떤 도움
db.users.insert(
{
_id: getNextSequence("sequence"),
name: "Bob Builder."
}
)
감사합니다.
As이 내가 몽고를 시작하고 내 VM 프로비저닝의 일환으로 컬렉션을 만드는 데 사용하는 스크립트입니다 요청 :
#start mongo service
sudo service mongod start
#set config to restart service on reboot
sudo chkconfig mongod on
#create DB collections and indexes
mongo --eval "db.getSiblingDB('audit').errors.ensureIndex({title_number:1})"
mongo --eval "db.getSiblingDB('audit').minteds.ensureIndex({title_number:1})"
이 지금까지 잘 작동되었지만 지금은 ID를 증가 자동이 필요합니다.
위의 링크에있는 지침을 따라 직접 대화 형 셸을 통해 기능을 추가하고 위의 사용자 컬렉션에 표시된대로 삽입에 함수를 호출했습니다. 이 시점에서 내가 한 일을 스크립트에서 찾기 시작하여 서버에 기능을 설치 (잘못 회신에 의해 판단 아마하지만)
mongo --eval "db.getSiblingDB('audit').counters.insert({_id: 'sequence',seq: 0})"
그때 시도
을 계산 순서를 보유 할 카운터 모음을 만들 처리했다 using
mongo audit --eval "db.getCollection('system.js').insert({_id:'getNextSequence', value:'function getNextSequence(name) { var ret = db.counters.findAndModify({ query: { _id: name }, update: { $inc: { seq: 1 } }, new: true }); return ret.seq; }'})"
Robomongo를 사용하면 기능이 있음을 알 수 있었지만 삽입을 시도했을 때 작동하지 않는 것 같습니다. 기본적으로 위의 링크에 표시된 프로세스를 스크립팅해야하지만 수동으로 수행하지 않고는 설치/실행 기능을 얻을 수 없습니다. 나는 근본적으로 뭔가 빠져있는 것 같아요. 그러나 그것이 무엇인지 알 수 없으므로 여러분의 의견을 매우 높이 평가합니다.
내 프로비저닝에 대한 세부 정보를 보여주기 위해 제 질문을 수정합니다. – spannerj