mongodb使用小记录

一.根据数组字段的某个值查询指定字段

例如:我想根据friend字段(数组)下的子字段查出我想要的指定字段
在这里插入图片描述
查询语句:
说明:“initiatorPhone”:1,“initiatorUserId”:1代表只查询这两个字段,如果是0则代表过滤这俩字段。
和mysql的select ‘a,b,c’ form table指定字段效果一样

db.getCollection("zhuli201909300943").find({"friends.friendNickName":"李可欣"},{"initiatorPhone":1,"initiatorUserId":1});

结果:
在这里插入图片描述

二.查询时间范围

$gt, $lt, $gte, $lte 分别对应(>, <, >=, <=)
demo: 查询指定时间范围的数据

db.getCollection("zhulirecords").find({"initiatorUserId":2003, "createTime" : { "$gte" : ISODate("2019-09-29T05:00:00Z")
, "$lt" : ISODate("2019-09-29T05:05:00Z") } });

在这里插入图片描述

三.批量更新或插入表数据

db.dreamconfigs.update({}, {$set: {"type": "yuanmeng"}}, {multi: 1})

效果:
在这里插入图片描述更新了15条
在这里插入图片描述

四.查询数组字段的长度值


db.zhuli201909280535.aggregate([{ "$match" : { "initiatorUserId" : 2623}}, { "$project" : {"count":{"$size":"$friends"} }} ])

在这里插入图片描述

五.创建数据库权限

如果需要外网访问首先在你的服务器出入向规则打开端口权限
在这里插入图片描述
另外要配置绑定IP改为0.0.0.0

不同权限对应的名称:
数据库用户角色:read、readWrite
数据库管理角色:dbAdmin、dbOwner、userAdmin
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色:backup、restore
所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase
超级用户角色:root

db.createUser(
  {
    user: "root",
    pwd: "root",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }]
  }
)

六、删除表字段

db.zhulirecords.update({},{$unset:{'zhulirecords':''}},false, true)

七、批量修改字段类型

* 一层字段类型更改:
db.cjcounts.find({"laveCount":{$type:16}}).forEach(
    function(x){
            db.cjcounts.updateOne({_id: x._id}, {$set:{laveCount: String(x.laveCount)}})
    }
);
* 多层字段类型更改:
db.zhongjiangs.find({}).forEach(
    function (x) {
        x.jiangList.forEach(function (doc) {
            printjson(doc)
            db.zhongjiangs.updateOne({"jiangList._id": doc._id}, {$set: {"jiangList.$.initiatorUserId": String(doc.initiatorUserId)}})
        })
    }
)
*字段类型编号: 

在这里插入图片描述

八、按天分组查询这天出现的次数

类似这个表
在这里插入图片描述

db.subSendRecord.aggregate(
   [
     {'$group': {'_id': {"$dateToString":{'format':'%Y-%m-%d','date':'$createTime'}},'count': {'$sum': 1}}}
   ]
)

查询结果:
在这里插入图片描述
如果想查这天里某个字段出现的次数:

db.subSendRecord.aggregate(
   [
        { '$group': { '_id': {'date':{"$dateToString":{'format':'%Y-%m-%d','date':'$createTime'}},'openid':"$openid"}, 'sum': { '$sum': 1 } } }
   ]
)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锅巴胸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值