Выполнение запроса MongoDB в Node.js - PullRequest
4 голосов
/ 07 августа 2010

Я пытаюсь выполнить эту команду MongoDB в Node.js:

db.events.group({
  key: {
    'timestamp.d': true
  },
  cond: {
    'event_name': 'search'
  },
  initial: {
    'count': 0,
    'empty': 0,
    'redos': 0
  },
  reduce: function(item, summaries) {
    summaries.count++;
    if (item.result_count == 0) {
      summaries.empty++;
    }
    if (item.original_query) {
      summaries.redos++;
    }
    var totalSuccesses = (summaries.count - summaries.redos - summaries.empty);
    summaries.percentNonFailures = (totalSuccesses / summaries.count) * 100
  }
})

Это прекрасно работает из команды Mongo, например, дает мне сводки по дням.Когда я пытаюсь сделать это в Node.js:

db.collection('events', function(err, collection) {
  collection.group({
    "timestamp.d": true
  }, {
    "event_name": "search"
  }, {
    count: 0,
    empty: 0,
    redos: 0,
    percentNonFailure: 0,
  }, function(item, summaries) {
    summaries.count++;
    if (item.result_count == 0) {
      summaries.empty++;
    }
    if (item.original_query) {
      summaries.redos++;
    }
    totalSuccesses = summaries.count - summaries.redos - summaries.empty
    summaries.percentNonFailure = (totalSuccesses / summaries.count) * 100
  }, function(err, results) {
    self.eventEmitter.emit(doneEvent, results)
  });
});

, я получаю один результат, в котором все суммы за день суммируются вместе, поэтому в основном это сумма подсчета, пустых, повторов за весь период.*

Что делается неправильно при попытке преобразовать запрос для использования в Node.js?

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

У меня была такая же проблема.Я немного углубился в код драйвера mongodb.

Проблема в ключах из вложенных документов.драйвер заканчивается чем-то вроде

obj["timestamp.d"]

, что не то, что вы хотите.

Я нашел аргумент 'command', который решил мою проблему.1010 * Вы можете увидеть это здесь: collection.js из строки 1054 на

0 голосов
/ 04 марта 2014

Мне трудно сослаться на API Документов.Так что я нахожу некоторые, и они там:

Здесь - документы в MongoDB .

и Здесь - это некоторыебольше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...