2015-06-03 3 views
2

У меня есть база данных XXX и коллекция YYY в MongoDB (с использованием MongoLab).MongoDB - отличительный и счетчик, самый простой случай

Вот пример записи:

{ 
"_id": { 
    "$oid": "551a5asdfsdfsdfs" 
}, 
"_class": "com.test.com", 
"mvid": "d0fffsdfs" 

} 

Я хотел бы получить все различные значения поля «MVID» и сосчитать их. Вот что нашел в интернете:

db.YYY.aggregate([{ $group: { _id: "$mvid"} },{ $group: { _id: 1, count: { $sum: 1 } } }]) 

Я также попытался

XXX.YYY.aggregate([{ $group: { _id: "$mvid"} },{ $group: { _id: 1, count: { $sum: 1 } } }]) 

я поставил выше в команду текстовое поле, в обоих случаях я получаю следующее сообщение об ошибке: «произошла ошибка анализируя ваш JSON. Пожалуйста, проверьте свой синтаксис (например, убедитесь, что вы используете двойные кавычки вокруг имен ваших полей и значений) и повторите попытку ».

Что я делаю неправильно?

+0

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

+0

Подсказка гласит: «убедитесь, что вы используете двойные кавычки вокруг имен ваших полей и значений». Я вижу много имен полей без двойных кавычек вокруг них. – IMSoP

+0

@IMSoP, я хотел бы заполнить поле «mvid». Это единственное поле, и в моем примере это двойные кавычки. – user1700890

ответ

2

Этих команда текстового поля для предоставления JSON-отформатированных параметров любая команда выбирается в раскрывающемся списке. aggregate не является одной из перечисленных команд, поэтому вам необходимо установить локальную оболочку MongoDB локально, а затем удаленно подключиться к базе данных MongoLab и выполнить команду.

Подробнее об установке оболочки MongoDB и подключении к MongoLab см. В разделе this blog post.

1

Для нахождения отсчетов каждого MVID:

db.YYY.aggregate([{$group: {_id: "$mvid", count: {$sum: 1}}}])

Для нахождения подсчета различной mvids:

db.YYY.aggregate([{$group: {_id: "$mvid", count: {$sum: 1}}}, {$group: {_id: null, count: {$sum: 1}}}, {$project: {_id: 0, count: 1}}])

+0

Ничего себе, это действительно сложно! Какова философия этого выражения (я имею в виду второй)? Есть ли хороший учебник по агрегированной заявке? Спасибо, что опубликовали его! – user1700890

+0

Вы имеете в виду конвейер агрегации? ну, мы имеем 1-ю группу, которая выполняет подсчет по каждому mvid, а затем выражение 2-й группы работает над этим и производит подсчет различных, а затем, поскольку нас интересовал только подсчет, используя операцию проекта, чтобы сделать именно это. Я нашел документ [doc] (http://docs.mongodb.org/manual/reference/operator/aggregation/interface/) на официальном сайте mongodb. – MSD