2016-01-07 3 views
2

Я есть следующий документ коллекции:Выбрать все различные поддокументы

{ "_id" : ObjectId("568dc77473bf57f465da61dd"), "name" : "Rama", "items" : [ { "id" : 40, "name" : "Botella" }, { "id" : 30, "name" : "Frasco" } ] } 
{ "_id" : ObjectId("568dc78873bf57f465da61de"), "name" : "Pepe", "items" : [ { "id" : 40, "name" : "Botella" }, { "id" : 29, "name" : "Cigarrillo" } ] } 

Каждый документ есть набор элементов. Каждый элемент является документом. Таким образом, у меня есть список всех отдельных элементов на коллекции:

{ "id" : 40, "name" : "Botella" }, 
{ "id" : 29, "name" : "Cigarrillo" }, 
{ "id" : 30, "name" : "Frasco" } 

С $ размотать я получен один пункт за каждый документ:

db.test.aggregate([{'$unwind': '$items'}, {'$project': {'items.id': 1, 'items.name': 1, '_id': 0}}]) 
{ "items" : { "id" : 40, "name" : "Botella" } } 
{ "items" : { "id" : 30, "name" : "Frasco" } } 
{ "items" : { "id" : 40, "name" : "Botella" } } 
{ "items" : { "id" : 29, "name" : "Cigarrillo" } } 

Но теперь, я не знаю, как получить отчетливое " Предметы'. Я делаю первые шаги с MongoDB.

Любые идеи?

+2

использование простой '' distinct' как db.collection.distinct ("вещи") ' – Yogesh

+1

Great !!! Прекрасно работает :) Спасибо. Отправьте ответ! – ramiromd

+0

Возможный дубликат [Отдельные значения определенного поля из MongoDB] (http://stackoverflow.com/questions/21193478/distinct-values-of-a-particular-field-from-mongodb) – styvane

ответ

0

Вы можете группировать на items.id и items.name, чтобы получить различные предметы

db.test.aggregate([ 
    {'$unwind': '$items'}, 
    {'$group': {'_id':{'id':'$items.id', 'name':'$items.name'}}}, 
    {'$project': {'items': '$_id', '_id':0}}]) 
Смежные вопросы