2013-12-18 51 views
14

有沒有辦法在某些字段上查詢具有不同值的對象?例如,我有記錄:獲取不同的記錄值

{ id : 1, name : "my_name", salary : 1200 } 
{ id : 2, name : "my_name", salary : 800 } 
{ id : 3, name : "john", salary : 500 } 

查詢:找出所有與NOT_THE_SAME(名稱)

我只是想ID 1和3的記錄,因爲我指定我不想與現場相同值的記錄name或2和3,在這種情況下並不重要。

回答

12

您可以使用db.collection.distinct找回唯一值的數組:

> db.test.distinct("name") 
[ "my_name", "john" ] 
7

你也可以使用一個獨特的句子用過濾收集。例如,你可以在800從工資中獲得的名稱不同的值用下面的查詢:

db.test.distinct("name", { "salary": { $gt: 800 } }) 
1
db.runCommand ({ 
    distinct: "CollectionName", 
    key: "key", 
    query: { "createdDate": { 
     $gte:new ISODate("2017-04-04T23:59:59Z"), 
     $lte:new ISODate("2017-04-25T23:59:59Z")}} }) 

這個查詢有助於發現在收集數據,將滿足之間條件的所有文件取鑰匙的價值日期

+0

儘管此代碼片段可能會解決問題,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – Carpetsmoker

+0

@Carpetsmoker - 添加評論,希望這有助於 – GSK