2016-03-08 52 views
0

我有这个样本JSON:在mongoDB中查找具有不同和排序的文档?

{ 
    "_id" : ObjectId("56de78e0c8f8759239f20cc8"),  
    "vendor_Name" : "bb group trades",  
    "parrent_id" : "56d6c4400a5eac8a78101c8f", 
    "channel_name" : "snapdeal", 
    "create_date" : ISODate("2016-03-07T18:30:00.000Z"), 
    "product_rating" : "3.9" 
}, 

{ 
    "_id" : ObjectId("56de7b29c8f8759239f20cca"), 
    "vendor_Name" : "bb group trades", 
    "parrent_id" : "56d6e2594e8ee6111417e67a", 
    "channel_name" : "snapdeal", 
    "create_date" : ISODate("2016-03-07T18:30:00.000Z"), 
    "product_rating" : null 
}, 

{ 
    "_id" : ObjectId("56de7b1ac8f8759239f20cc9"), 
    "vendor_Name" : "oyedeal", 
    "parrent_id" : "56d6e2594e8ee6111417e67a", 
    "channel_name" : "snapdeal", 
    "create_date" : ISODate("2016-03-07T18:30:00.000Z"), 
    "product_rating" : "5.0" 
} 

我要取的具有不同parrent_id,并有文件最古老create_date

我怎样才能做到这一点?

+0

现在还不清楚你在这里问什么。你是什​​么意思*有不同的'parrent_id'和最早的'create_date' *?你应该考虑编辑你的问题来添加预期的结果。 – styvane

回答

1

请试试这个。首先,按升序对create_date进行排序,并按parrent_id进行分组,并挑选每个parrent_id的最早记录以满足不同的要求。

db.collection.aggregate([ 
         // sort the create_date in ascending order 
         {$sort: {create_date: 1}}, 
         // group by `parrent_id`, and pick the first element for each field which is the oldest create_date. 
         {$group: {_id: '$parrent_id', 
            'vendor_Name': {$first: '$vendor_Name'}, 
            'channel_name': {$first: '$channel_name'}, 
            'product_rating': {$first: '$product_rating'} 
            } 
         }]); 
+0

这是给予聚合不是一个功能 – YAM

+0

@YAM,对不起,错误,它应该'聚合' – zangw

+0

是的,它现在正在运行 – YAM

相关问题