陌路渐远 2019-01-10 15:09 采纳率: 0%
浏览 6094
已采纳

mongodb数据库查询语句,多条件筛选

mongodb数据库,某个表内有多个字段,其中4个字段为属性值,要求删除4个属性值完全相同的数据,例某两条数据的c1,c2,c3,c4四个属性各自一 一对应且相同,要求只保留最新的一条,请问用Mongodb语句该如何操作,目前自己编写的语句,可以筛选出所有4个属性完全相同的数据,但是没办法去掉最新的一条。
哪位大神可以指点一下
db.basestationinfo.aggregate([{
$sort: {
_id:-1
}
},{
$group: {
_id: {
c1: '$c1',
c2: '$c2',
c3: '$c3',
c4: '$c4'
},
numcount: {
$sum: 1
},
id:{$push:'$_id'},
firstid:{$first:'$_id'}

    }
},
{
    $match: {
        numcount: {
            $gt: 1
        }
    }
}

])

  • 写回答

1条回答 默认 最新

  • 陌路渐远 2019-01-13 12:31
    关注

    以下语句在mongodb客户端执行,可实现功能
    db.info.aggregate([{
    $sort: {
    _id:1
    }
    },
    {
    $group:{
    _id: {c1: "$c1",c2:"$c2",c3:"$c3",c4:"$c4"},
    count: {$sum: 1},//取得总数
    dups: {$addToSet: '$_id'}//暂存_id到set
    }
    },{
    $match:{
    count:{$gt:1}//只找出大于1的重复数据

    }
    }
    ],{
    allowDiskUse:true//因为数据超过16M,得使用硬盘缓存
    }).forEach(function(doc){
    doc.dups.shift();//把数组的第一个元素从其中删除,并返回第一个元素的值,即不删除第一条
    db.info.remove({_id: {$in: doc.dups}});//移除掉剩下的重复数据
    })

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格