陌路渐远 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}});//移除掉剩下的重复数据
    })

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

报告相同问题?

悬赏问题

  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件