2016-11-19 16 views
1

比方說,我們有文檔的集合,如下所示:MongoDB中對多個字段進行不同

[ 
{ 
"name" : "john", 
"age" : 23, 
"city": "New York", 
"gender": "M" 
}, 
{ 
"name" : "doe", 
"age" : 30, 
"city": "dubai", 
"gender": "M" 
}, 
{ 
"name" : "jean", 
"age" : 23, 
"city": "New York", 
"gender": "F" 
} 
{ 
"name" : "phil", 
"age" : 24, 
"city": "Ohio", 
"gender": "M" 
} 
] 

預期輸出:

{ 
"name" : ["john","doe","jean","phil"], 
"age" : [23,30,24], 
"city": ["New York","Dubai","Ohio"], 
"gender": ["M","F"] 
} 

我試着使用MongoDB的不同,但將返回我只是唯一的一個特定字段的值...我不認爲我們可以通過不同的查詢中的多個字段...

+0

你只想要的不同之處在任何序列的所有鍵的值? – Yogesh

回答

3

$addToSet是專門針對這些類型的東西。

db.coll.aggregate([ 
{$group: { 
    _id: null, 
    name: {$addToSet: '$name'}, 
    age: {$addToSet: '$age'}, 
    city: {$addToSet: '$city'}, 
    gender: {$addToSet: '$gender'} 
    }} 
]) 

這給輸出 -

{ "_id" : null, "name" : [ "phil", "jean", "doe", "john" ], "age" : [ 24, 30, 23 ], "city" : [ "Ohio", "dubai", "New York" ], "gender" : [ "F", "M" ] } 
+0

太棒了!請注意'_id'必須包含在'$ group'中。 SO上唯一的答案就是一個很好的例子。 –

相關問題