2015-03-11 2 views
0

это схема:Как подсчитать количество рефералов с использованием агрегации в MongoDB

{ 
"_id" : ObjectId("54f8d7ad92ccf803008a0e4f"), 
"personal" : { 
    "name" : "test", 
    "placa" : "BBB222" 
}, 
"recruiter" : { 
    "user_id" : "541cba6fe4b0288d56081fe2", 
    "date" : 1425594285410, 
    "name" : "Mario Hart", 
    "rol" : "greeter", 
    "channel" : "referido", 
    "referred" : "VERA" 
}, 

Я хочу, чтобы создать список имен подсчета количества рефералов, что каждый из них имеет. Я пытаюсь следующим образом, но его вообще не работает. Это код, который я написал.

db.drivers.aggregate({ 
$group: { _ 
    id:{"$personal.name", 
    "$recruiter.referred"  
    }, 
     total_recommendations:{ $sum:1} } 
    } ]) 

Это не работает, я не могу заставить этот код работать. Сервер, на котором я работаю, находится на версии 2.6.8

ответ

2

Ваш синтаксис неверен. $ префиксы предназначены для переменных ссылок на поля или зарезервированы для «операторов» при использовании в «ключевой» части обозначения «ключ/значение». Он также никогда не перестает удивлять количество людей, которые используют «соединение ключ» обозначение в группировке _id, когда у них есть только одно поле:

db.drivers.aggregate([ 
    { "$group": { _ 
     "_id": "$recruiter.referred"  
     "total_recommendations":{ "$sum": 1 } 
    }} 
]) 
+0

$ personal.name не делает ничего там правильно? Я хочу знать, знаете ли вы, где я могу скомпоновать эти запросы с помощью синтаксиса? Его потому что я использую оболочку linux, но я учусь, и я не могу написать код. Спасибо за ваше время и ответ: D – Giuseppe

+2

@ Giuseppe, если вы используете действительную нотацию JSON, как и я [потому что мне нравится делиться:)], вы всегда можете использовать JSON linter. Но AFAIK нет ничего, что указывало бы на незаконное использование оператора, кроме запуска запроса. –

+0

Я вижу, я загружу плагин для возвышенного, тогда я полностью забыл, что это была json-нотация. Да, я всегда делился своим кодом. И последний вопрос, я обещаю! , Если я хочу заказать это путем total_recomendations, я добавил это в свой запрос, но это не упорядочение. Вы знаете, что не так с моей «логикой» --- {$ sort: {total_recommentsations: 1}}? – Giuseppe

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