陌路渐远 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 我下载图形界面重启完就变成这样了,打字也打不了,动也动不了,该怎么解决(操作系统-centos)
  • ¥15 VBA中在窗体中遍历所有checkbox控件,提取出被选中的checkbox的caption值
  • ¥15 在Ubuntu上有什么命令,或者是系统文件能告诉我链接nvme ssd的pcie槽位是不是支持热插拔功能?
  • ¥15 ansys license许可证问题
  • ¥20 QQ号和密码都能正常登录微信 QQ号和密码登录微信显示密码错误
  • ¥15 qiankun主应用注册子应用提示跨域
  • ¥15 单片机RTOS Kernel与应用分离开发,Kernel如何调起应用?
  • ¥15 快手小店商家版APP怎么第三方APP跳转到指定用户聊天界面
  • ¥15 为什么AVL fire软件仿真时的步长改变了,仿真结果也会改变
  • ¥100 如何帮我写一个java小游戏