我有一种情况,我只需要获取大于0的非连续记录和所有值为0的记录。
例如,我的列名叫mid,然后像“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”
如何实现。有什么更好的方法?
最佳答案
您无法使用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 ;
关于mongodb - 独特的MongoDB函数-如何使用与众不同的标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33805173/