不同的MondoDB功能 - 如何使用不同的标准

时间:2015-11-19 13:22:35

标签: mongodb grails distinct distinct-values

我遇到的情况是,我只需要获取大于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”

如何实现它。有什么更好的方法?

1 个答案:

答案 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 ;