mongodb - 独特的MongoDB函数-如何使用与众不同的标准

标签 mongodb grails distinct distinct-values

我有一种情况,我只需要获取大于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/

相关文章:

javascript - MongoDB 查找具有多个 eq 的 expr

grails - 如何在Grails创建的数据库中更新排序规则

sql - 如何从选择查询中消除重复项?

grails - 如何在Grails中编辑web.xml?

php - 从所有列中选择 unique 到单个列中

Mysql 多个不同的不起作用

javascript - nodeJS 模块 Mongoose 给我错误

mongodb - 计算每个文档的子文档

javascript - ES6 对象内对象解构

grails aspectJ 字节码编织