2015-11-12 4 views
2

Использование mongoose's Model.aggregate() возвращает пустой массив.Aggregate возвращает пустой массив

Я по существу скопировал формат, как показано here.

var match = {}; 
var project = {}; 
    project["_id"] = 0; 
    project["products.totalprice"] = 1; 
    project["line"] = "$products.closedate"; 

ThisCollection.aggregate([ 
    {$match: match}, 
    {$project: project}, 
    {$group: { 
     _id: "$line" 
    }} 

], function(err, docs){ 
    console.log(docs); //!! Returning [] 
}); 

Моей схема является по существу name и _id полем с вложенным ассортиментом продукции с totalprice, closedate и некоторыми другими областями.

Есть, безусловно, множество записей (около 130 000 записей). Может ли кто-нибудь выявить проблему с этим?

+0

Выполняет ли запрос без оператора '$ group' какие-либо результаты? – Jaco

+0

@Jaco Nope, попробовал, что все еще пусто. Проверка над моими ключами снова, но «отсутствующая была опечатка на копии-вставке. –

+0

@Jaco Почти ... Используя $ products.totalprice в объекте' project', я теперь получаю 'undefined' для документов. –

ответ

1

Я создал это фиктивные данные, чтобы представить скелет вашей схеме:

db.data.save({name:"a",products:{totalprice:1,closedate:1}}) 
db.data.save({name:"b",products:{totalprice:2,closedate:2}}) 

Этот запрос делает вернуть две записи и совпадает с вашим при вставке строки JSON для JavaScript переменной project

ThisCollection.aggregate([{$match:{}},{$project:{"_id":0,"products.totalprice":1,line:"$products.closedate"}},{$group:{_id:"$line"}}]) 
+0

Моя коллекция была пуста. –

+0

Да, это не помогает :-) – Jaco

Смежные вопросы