2016-08-22 2 views
0

내가 가지고 MongoDB의 데이터베이스에있는 개체가 있습니다데이터베이스에 값을 증가하는 방법 매초마다

  1. 최대 인구를.
  2. 인구 증가 (매초 증가 할 인구 증가량).
  3. 현재 인구.

사용자가 다른 방법으로 인구를 변경하지만 최대 인구에 도달 할 때까지 개체의 인구 증가에 의해 개체의 현재 인구가 증가하는 코드를 서버에 갖고 싶습니다.

어떻게 구현할 수 있습니까? 나는 $ inc 쿼리를 사용하여 유성 간격이 필요하다고 생각하지만,이 파일을 넣어야하는 파일과 개체의 최대 모집단에 액세스하고 쿼리 내의 값을 증가시키는 방법에 대해서는 알지 못합니다.

+2

나쁜 생각 그게 전부 사용하여이 작업을 수행 할 수 있습니다. 현재 인구를 업데이트 할 때 시간을 저장하십시오. 실제 값이 필요할 때 시간 차이로 새로운 현재 인구를 계산할 수 있습니다. – tkausl

+0

사용자가 인구를 감소 시키거나 증가시키는 메서드를 호출하고 멀티 플레이어 게임이므로 데이터베이스에 저장해야하는 값이 필요하기 때문에 그렇게 할 수 없습니다. – epiqueras

+0

번호. 매초 수천 개의 레코드를 업데이트하는 __bad__ 아이디어는 성능을 거의 저하시킵니다. 이 메소드를 사용하여 필요할 때 실제 실제 인구를 _ 계산하고 저장할 수 있습니다. 필요하지 않은 경우 건드리지 마십시오. 필요한만큼 계산하십시오. – tkausl

답변

1

실적 우려 옆 (객체의 수를 업데이트 할 경우 작은 말입니다), 당신은 Meteor.setInterval

import { Meteor } from 'meteor/meteor' 
Meteor.setInterval(()=>{ 
    MyCollection.find({ $where: { "this.population < this.maximumPopulation" }}).forEach(doc => { 
    MyCollection.update(doc._id,{ $inc: { population: doc.populationIncrement }}); 
    } 
},1000); 
관련 문제