2014-11-05 1 views
2

У меня есть коллекция под названием «myplace». Она имеет следующие имена: place_name, city, широта, долгота.Как я могу группировать данные при извлечении из mongodb с помощью go?

формат Doc

{ 
     "_id" : ObjectId("544a2147785b707b340ed6c7"), 
     "latitude" : 12.36547, 
     "longitude" : 1.235689, 
     "place_name" : "some_place", 
     "city" : "City1" 
} 
{ 
     "_id" : ObjectId("544a2147785b707b340ed6c7"), 
     "latitude" : 12.36547, 
     "longitude" : 1.235689, 
     "place_name" : "some_place", 
     "city" : "City3" 
} 
{ 
     "_id" : ObjectId("544a2147785b707b340ed6c7"), 
     "latitude" : 12.36547, 
     "longitude" : 1.235689, 
     "place_name" : "some_place", 
     "city" : "City1" 
} 
{ 
     "_id" : ObjectId("544a2147785b707b340ed6c7"), 
     "latitude" : 12.36547, 
     "longitude" : 1.235689, 
     "place_name" : "some_place", 
     "city" : "City2" 
} 
{ 
     "_id" : ObjectId("544a2147785b707b340ed6c7"), 
     "latitude" : 12.36547, 
     "longitude" : 1.235689, 
     "place_name" : "some_place", 
     "city" : "City2" 
} 

Как можно сгруппировать данные с одного города? Значение. Мне нужен массив результата json. Первый массив должен содержать все данные, имеющие массив city1 второй, все данные, имеющие город2 и т. Д.

+0

Так как вы в любом случае выборки всех данных, что о 'myplace.Find (ноль) .Iter()' и сделать группировку в Go? – ANisus

ответ

2

Вы могли бы сделать это в Монго самой легче, на мой взгляд. Используйте структуру агрегации.

db.yourCollection.aggregate([{$group:{_id: "$city", details:{$push: {latitude: "$latitude", longitude: "$longitude", place_name:"$place_name"}}}}]) 

Я думаю, что это должно сработать, я не могу на самом деле попробовать его в данный момент на работе. Надеюсь, поможет!

1

Если вы используете mgo, простой способ должен сделать трюк. Здесь мы ищем первый в городе, а затем по имени:

query1 := collection.Find(nil).Sort("city", "place_name") 
Смежные вопросы