2015-11-19 2 views
0

У меня есть ситуации, когда мне нужно принести только окреность записи, которые терка чем 0, и все записи со значением 0.Distinct функции MondoDB - Как использовать некоторые критерии с отчетливым

Например, я окнеИМЯстолбец называется середина, то он выглядит как «0,0,1,1,2,3,5,5,3», тогда я должен получить только «0,0,1,2,5,3».

Короче отчетливой записи плюс все середине со значением 0

я использовал этот

def distinctMIdCursor = dataSetCollection.distinct("mid",whereObject) 
def distinctMIdList = distinctMIdCursor.asList() 

, но его результат выборки, как "0,1,2,5,3"

Фактический результат "0,1,2,5,3".

Ожидаемый результат "0,0,1,2,5,3"

Как добиться. Что лучше?

ответ

0

Вы не можете достичь этого с помощью distinct, потому что, делая это, вы бросаете вызов цельной цели использования отдельных. Вместо этого вы можете написать два запроса и выполнить результат.

def nonZeroDistinctList = dataSetCollection.distinct("mid",{mid: {$ne:0}}); 
    // map function to convert object list into mid value list 
    def allZeroList = dataSetCollection.find({mid:0}).map(function(doc){return doc.mid}); 
    // concating the two lists 
    def result = nonZeroDistinctList + allZeroList ;