我遇到的情况是,我只需要获取大于0的记录和所有值为0的记录。
例如我有一个名为mid的列名,然后它的行如“0,0,1,1,2,3,5,5,3”那么我应该只获取“0,0,1,2,5, 3" 。
简短的记录加上所有mid值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 :(得分:0)
你无法用distinct
实现它,因为这样做会违背使用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 ;