MongoDB常用命令及java中的用法梳理

MongoDB常用命令及java中的用法梳理

各位大佬,总结中存在如有错误,还请谅解指出,后续会不断更新,谢谢!

1、查询语句

  • db.user.find({"name":"张三"},{"id":1,"age":1})   根据name查询出数据,并只展示id和age字段数据(第一个{}中为查询条件,以,隔开;第二个{}为返回展示的字段)
  •  db.user.find({"name":"张三"},{"id":0,"age":0})    根据name查询出数据,并展示除id和age的其他所有字段数据(0和1只能使用一种情况)
  • db.user.find({})   查询所有数据
  • db.user.find({"name":{$regex:"张"},"age":"20"})  根据name模糊查询和age匹配查询

    Query query = Query.query(Criteria.where("name").regex(user.getName).and("age").is(user.getAge));

    List<User> users = mongoTemplate.find(query, User.class);

  • db.user.count()  获取所有数据的数量

    Query query = Query.query(Criteria.where("name").regex(user.getName).and("age").is(user.getAge));

    Long total = mongoTemplate.count(query, User.class);

  • db.user.find({}).sort({id:1, name:-1})  根据id进行排序  1 升序  -1 降序

    query.with(new Sort(Sort.Direction.DESC, "id"));

  • in  包含 、 nin 不包含 、 ne 不等于  、 all   包含所有(包含all中的多个值)、regex 模糊查询、 exists 字段是否存在、elemMatch  

db.user.find({"age":"18","role":{$in:["开发","测试"]}})   查询年龄18且角色为开发或测试人员信息

db.user.find({"age":{$nin:["70","80"]}})   查询年龄不包含70、80的数据

db.user.find(name:{$ne:"张三"})   查询名称不是张三的数据

db.usre.find(role:{$all:["管理员","开发"]})   查询角色中包含管理员和开发 的人员信息(role为List<String>类型)

db.user.find({name:{$regex:"张"}})         db.user.find(({name:/张/})   模糊查询名称带有张的数据

db.user.find({sex:{$exists:false}})  查询数据中不包含sex字段的数据(不包含sex为空或null情况,当为true时为字段存在)

db.user.find({wifeinfo:{$elemMatch:{"name":"小红"}}})    查询老婆名称为小红的人员数据(wifeinfo为Map数据类型)

  • or  、and

db.user.find({$or:[{age:"18"},{"age":"20"}]})   查询年龄18和20的数据

db.user.find({$and:[{age:"18"},{"role":{$in:["开发"]}}]})   查询年龄18且角色包含开发的数据

  • 聚合管道  match  筛选条件 、 group 分组、 sort 排序、skip 跳过条数、 limit  限制条数

db.user.aggregate(
[
{$match: {"role": {$in: ["p180123112810018", "p160307185810006", "p180224165910065"]}}},
{$group: {"_id":{"age":"$age" ,  "company":"$company"}}},     //根据年龄和公司进行分组
{$sort:{"id":-1}},    //根据id进行降序排序

{"$skip":10},    //跳过10条数据

{"$limit":5}   //展示5条数据
]);
 

批量修改,将user表中的微信名称都改为用户名称

db.user.find({}).forEach(

      function(item){

         db.user.update({"id":item.id},{$set:{weixname:item.name}})

     }

)

统计表中gituser的值重复出现次数大于1

db.gitlabUserInfo.aggregate([

    {$group:{

              _id:{"gituser":"$gituser"}, count:{$sum:1}

            }

    },

   {

    $match:{count:{$gt:1}}

   }

])

索引

//查询所有索引

db.user.getIndexes()

//创建普通索引

db.user.createIndex({"name":1})

//创建唯一索引

db.user.createIndex({"id":1},{unique:true})

//删除索引(sys_id_1索引id)

db.user.dropIndex("sys_id_1")    

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值