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 } } }
   ]
)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_15955423/article/details/102496667
今日推荐