我有下一个文件集:
{ "_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" }
使用$ unwind,我为每个文档获得了一个项目:
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执行我的第一步。
有什么想法吗?
答案 0 :(得分:0)
您可以对items.id
和items.name
进行分组,以获取不同的项目
db.test.aggregate([
{'$unwind': '$items'},
{'$group': {'_id':{'id':'$items.id', 'name':'$items.name'}}},
{'$project': {'items': '$_id', '_id':0}}])