2017-02-16 51 views
0

我是新手到蒙戈,我試圖通過值取組中的子文檔,並具有蒙戈集合結構,如:如何組蒙戈子文件

{ 
"_id" : ObjectId("589d4e4b270f8b1635d400b1"), 
"myShopId" : 439, 
"products" : [ 
    { 
     "productId" : "1234", 
     "productName" : "sambarpowder 500 gm", 
     "productCategory" : "masala",   
     "mrp" : "90",   
     "_id" : ObjectId("589d595f6da20b72fe006ea9") 
    }, 
    { 
     "productId" : "5678", 
     "productName" : "moong dhal 200 gms",    
     "productCategory" : "dhal",    
     "mrp" : "38 ", 
     "_id" : ObjectId("589d595f6da20b72fe006eaa") 
    }, 
     { 
     "productId" : "5678", 
     "productName" : "moong dhal 200 gms",    
     "productCategory" : "dhal",    
     "mrp" : "38 ", 
     "_id" : ObjectId("589d595f6da20b72fe006eaa") 
    } 
], 
"isAlive" : 1, 
"__v" : 3 
} 

在這裏,我想這樣做在這一組中。 用於例如在MySQL:

select productCategory from products where shopId = '439' groupby productCategory 

我怎樣才能通過蒙戈子文件

My Expected output is like : 

category : [{ 
    productCategory : masala 
    _id : ObjectId("589d595f6da20b72fe006ea9") 
}, 
{ 
    productCategory : dhal 
    _id : ObjectId("589d595f6da20b72fe006eaa") 
} 

]

+0

我已經試過這樣db.shopProductDetails.group({ 「鑰匙」:{ 「products.productCategory」:真 }, 「初始」:{}, 「減少「:function(obj,prev){}, 」cond「:{ 」shopId「:」439「 } }); – karthik

+0

但我得到空元素 – karthik

+1

該組命令變體已棄用。改用'$ group'彙總。 https://docs.mongodb.com/manual/reference/operator/aggregation/group/。對於整套管道階段。 https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/ – Veeram

回答

3

希望這將有助於實現組,

db.test.aggregate([{ 
    $match: { 
     myShopId: 439 
    } 
    }, { 
    $unwind: "$products" 
    }, { 
    $group: { 
     _id: { 
     "productCategory": "$products.productCategory" 
     }, 
     "id": { 
     $first: "$products._id" 
     } 
    } 
    }]) 

輸出:

{「_id」:{「productCategory」:「dhal」},「id」:ObjectId(「589d595f6da20b72fe006eaa」)}

{「_id」:{「productCategory」:「masala」}「id」的ObjectId( 「589d595f6da20b72fe006ea9」)}

+0

它的工作原理就像我期望的那樣謝謝! – karthik

+1

如何在同一場景中應用限制和偏移量? –

+0

這將工作:db.test.aggregate([{$ match:{myShopId:439}},{$ unwind:「$ products」},{$ limit:8},{$ skip:5},{$ group :{_id:{「productCategory」:「$ products.productCategory」},「id」:{$ first:「$ products._id」}}}]) – karthik