2015-05-21 5 views
1

Ниже запроса нет никаких результатов, хотя есть поля, соответствующие местоположению геометрии и отметке времени.

Я попытался изменить $gt на $ne и он возвращает сумму всех $value s.

Я даже попытался проверить timeStamp больше, чем 0. все равно результата нет. Здесь timestamp - двойной тип данных.

db.csv2.aggregate([{ 
    $match: { 
     $and: [{ 
      loc: { 
       $geoWithin: { 
        $box: [ 
         [-128.232422, 26.382028], 
         [-109.6875, 43.624147] 
        ] 
       } 
      } 
     }, { 
      timeStamp: { 
       $gt: 1432201420790 
      } 
     }] 
    } 
}, { 
    $group: { 
     _id: null, 
     total: { 
      $sum: "$value" 
     } 
    } 
}]); 
+2

Do поля совпадают ОБА 'loc' * и *' timeStamp', а не только один или другой? Вы можете совместить 'timestamp' * без * указания' loc'? Вы не требуете '$ и 'здесь; просто '$ match: {loc: {...}, timeStamp: {...}}' будет делать трюк. – zamnuts

+1

По совпадению, если вы согласны с этим условием, то u. Если да, да .. loc с заданными координатами и меткой времени больше, чем этот диапазон имеет результаты. Я попробовал запустить его без $, и это порождает синтаксическую ошибку. – Aravindh

ответ

2

Указанная вами ошибка является явной. Прочитайте документ, чтобы увидеть, как реализовать функцию агрегации GT $: documentation

В принципе, условие является массивом

{ $gt: ["$timeStamp", 1432201420790] } 

[EDIT] Ваш вопрос, вероятно, происходит от синтаксиса со знаком доллара перед полем временной метки, отсутствующим в вашем коде. Попробуйте это

{ $gt: ["$timeStamp", 1432201420790] } 

вместо

{ timeStamp: { $gt: 1432201420790 }} 
+1

Обратите внимание, что синтаксис оператора '$ gt' для регулярных и агрегационных запросов отличается. – bagrat

+0

Gook примечание. Вот агрегирование querie :) – GuillaumeA

+0

Я сделал довольно много исследований. Все еще не в состоянии это исправить. Моя основная потребность - совместить 2 условия и сгруппировать результат, чтобы выполнить операцию суммирования. Из условия 2 один проверяет, превышает ли конкретное поле больше заданного числа. Как я могу это сделать .. :( – Aravindh