2017-04-24 46 views
0

嗨,我想獲得mongodb中的distict值。與mongodb中的數組不同的查詢?

這是我的示例表

Name________________Age___________________Salary

X ___________________ 25 ___________________5000

X ___________________ 25 ___________________5000

X ___________________ 26 ___________________5000

ý___________________ 25 ___________________500 0

Ÿ___________________ 26 ___________________5000

我想要得到的結果是這樣

{ 

     "Name" : "x", 
    "Age" : [ 
      { 
       25,26 

      }] 
    } 

{ 

     "Name" : "y", 
    "Age" : [ 
      { 
       25,26 

      }] 
    } 

有沒有什麼辦法來得到這樣的結果。

我的SQL查詢

select distinct Name,Age from Table where salary=5000

我想這樣

但這不是能夠得到這樣

db.getCollection('Table').aggregate([ 
{"$match":{Salary:5000}}, 
{"$group":{_id:{Name:"$Name",Age:"$Age"}}}, 
{"$project" : {_id:0, Name:"$_id.Name", Age:"$_id.Age"}} 
]) 

回答

2

使用$addToSet爲不同Age$group荷蘭國際集團上Name獲得所需的輸出。

db.getCollection('Table').aggregate([ 
{"$match":{Salary:5000}}, 
{"$group":{_id:"$Name", "Age":{$addToSet:"$Age"}}}, 
{"$project" : {_id:0, Name:"$_id", Age:1}} 
]) 
+0

您好veeram我有一個疑問在MongoDB查詢。 從表中選擇(獨特名稱),年齡,薪金。 我想只取名稱不同,任一列都不想顯示爲不同的,但我想顯示所有的列作爲沒有不同,包括_id列值。你能給我答案 – Vinoth

+1

使用$ push爲組中的每一列。像「薪水」:{「$ push」:「$ Salary」}' – Veeram

+0

我應該在哪裏給查詢。你可以在「薪水和年齡」欄中添加這個答案 – Vinoth