MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Стратегии за агрегиране в реално време в MongoDB

Изглежда, че сте добавили две полета age_rank , average_age . Това са ефективно изчислени полета въз основа на данните, които вече имате. Ако ви дам документа с изгледи на страници и рождени дни на потребителите, би трябвало да е много тривиално клиентският код да намери мин./макс., средно и т.н.

Струва ми се, че искате MongoDB да извърши агрегацията за вас от страната на сървъра. Но вие добавяте ограничението, че не искате да използвате Map/Reduce?

Ако разбирам правилно въпроса ви, вие търсите нещо, където можете да кажете "добавете този елемент към масив и всички зависими елементи да се актуализират сами" ? Вие не искате читателите да изпълняват някаква логика, искате всичко да се случи "магически" от страната на сървъра.

Така че има три различни начина да се справите с това, но в момента е наличен само един от тях:

  1. Напишете тази логика от страна на клиента. Не звучи като решението, което искате, но ще работи. Ако разполагате с основните данни, правенето на max/min/med/avg би трябвало да е доста тривиално на повечето езици.
  2. Използвайте предстоящите функции за Агрегиране . Те не са планирани до 1.9.x. Подобреното агрегиране ще позволи да извлечете данните, които търсите, но пак ще трябва да пишете съответните заявки. Базовата база данни все още не съдържа данните, които търсите.
  3. Имате нужда от тригери . Ако наистина искате DB винаги да е последователна и да съдържа обобщени данни, тогава това е, от което се нуждаете. Функцията за задействане обаче все още не съществува.

За съжаление единствената ви опция в момента е №1. За щастие познавам няколко души, които успешно използват опция №1.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongod, mac os x - rlimits предупреждение

  2. как да изпълните командата mongo admin от java

  3. Как трябва да внедря тази схема в MongoDB?

  4. Mongodb atlas + node.js работи локално, но спира, когато бъде изпратен към Heroku

  5. Топ 5 предимства на споделения MongoDB хостинг