MongoDB结合Robo 3T 1.4.3的简单操作

MongoDB的简单操作结合Robo 3T 1.4.3工具进行查询。

常用的正则表达式

/* 29 */  正则表达式 /\* [0-9]* \*/
"_id" : ObjectId("5f3d05cdfd2aa9a8a7"),   正则表达式  \"([^\"]*_id)\".*,

使用方法:查询结果去掉注释和不需要的字段后可直接修改为json放入到MySQL中查询。

查询说明

MongoDB 查询数据的语法格式:db.collection.find(query, projection)
    说明: 
             1 collection:链接,可以使用 db.getCollection('表名') 或者 db.表名
             2 find:查询,可以使用findOne,find/findMany
             3 query:查询条件。
                   3.1 and关系使用","间隔;
                   3.2 or关系使用,$or:[{"字段1":"字段值1"},{"字段2": "字段值2"}]                  
             4  projection:使用投影操作符指定返回的键,缺省是默认所有字段显示
操作符:
               {"字段1":"字段值"} 相当于 字段1=字段值1;
               {"字段1":{$ne:"字段值1"}} :不等于 相当于 字段1 != 字段值1

               {"字段1":{$lt:"字段值1"}} :小于 相当于 字段1 <字段值1
               {"字段1":{$lte:"字段值1"}} :小于或等于 相当于 字段1 <= 字段值1
               {"字段1":{$gt:"字段值1"}} :大于 相当于 字段1 > 字段值1 
               {"字段1":{$gte:"字段值1"}} :大于或等于 相当于 字段1 >= 字段值1    
           
               {"字段1":/字段值1/} :模糊查询 相当于 字段1 like '%字段值1%'
               {"字段1":/^字段值1/} :以开始 相当于 字段1 like '字段值1%'
               {"字段1":/字段值1$/} :以结束 相当于 字段1 like '%字段值1'

               例子: db.getCollection('集合名称').find({name:/R4300$/});


               {"字段1":/^字段值1^/} :不包含 相当于 字段1 not like '%字段值1%'

  匹配null :{"字段1":null}
  使用distinct: 表名.distinct('字段1');
  in/not in  .find({'字段1' : {‘$in’ : ['字段值1', '字段值2', '字段值3']}}); 
                  .find({'字段1' : {‘$nin’ : ['字段值1', '字段值2', '字段值3']}});
  exists  {字段1:{$exists:'字段值1'}}            
  $all匹配所有:{字段1:{$all:[字段值1,字段值2]}} ,必须都满足才可以
  多层关系查询:{"字段1.子级字段2":/子级字段值1/}  或者 {"字段1":{'$elemMatch':{'子级字段1':/子级字段值1/}}}

太麻烦了,来个实际点的操作。

=查询

db.getCollection('集合').find({"name":'name值'},{_id:0,name:1})

模糊查询

db.getCollection('集合').find({"name":/name值/},{_id:0,name:1})

{_id:0,name:1} 查询结果展示那些字段的值

查询数量

db.getCollection('集合').find({"name":/name值/},{_id:0,name:1}).count()

in查询

db.getCollection('集合名称').find({'字段' : {'$in' : [限制条件1,限制条件2]},'数组字段名称':{$size:长度限制}})

db.getCollection('集合名称').find({'_id' : {'$in' : [ObjectId("63f33758daec1c9f"),ObjectId("63f33aec1c6f")]},'attrs':{$size:9}})

多条件and查询

db.getCollection('集合').find({"name":'name值',"code":'Code123'},{_id:0,name:1,code:1})

更新操作

更新一条记录的某个字段

db.getCollection('集合名称').update({'code':'code123'},{$set:{'name':'name123'}})

更新记录中的数组中的某个字段

db.getCollection('集合名称').update({code:/ZZGX_B02F0302_/},{$set:{'属性数组.索引':'更新值'}})

比如 

db.getCollection('集合名称').update({code:'007'},{$set:{"code":"code123","params.12.value":"new_value","name":"007"}},false,true)

增加了点小尾巴,用于更新多条;

数组中增加元素(单个,不管数组中是否存在也往里放,这样的操作有可能造成里面有多个关键词的数据)

db.getCollection('集合名称').find({'类型':ObjectId("xxxx")}).forEach(
    function(item)
    {
    db.getCollection('集合名称').update({"_id":item._id},
    {$push:{"params":{
            "key" : "key123",
            "value" : "123"
        }
    }})})

数组中增加多个元素($addToSet 没有就添加,有不添加)

db.getCollection('集合名称').find({'_id':ObjectId("xxxx")}).forEach(
    function(item)
    {
    db.getCollection('集合名称').update({"_id":item._id},
    {$addToSet:{"params":{$each: [{
            "len" : 255,
            "notnullable" : false,
            "enums" : [],
            "name" : "业务名称",
            "field" : "business_name",
            "dtype" : "string",
            "dvalue" : ""
        }, 
        {
            "len" : 255,
            "notnullable" : false,
            "enums" : [],
            "name" : "负责科室",
            "field" : "resp_office",
            "dtype" : "string",
            "dvalue" : ""
        }, 
        {
            "len" : 255,
            "notnullable" : false,
            "enums" : [],
            "name" : "负责部门",
            "field" : "resp_department",
            "dtype" : "string",
            "dvalue" : ""
        }, 
        {
            "len" : 255,
            "notnullable" : false,
            "enums" : [],
            "name" : "负责人",
            "field" : "resp_people",
            "dtype" : "string",
            "dvalue" : ""
        }, 
        {
            "len" : 255,
            "notnullable" : false,
            "enums" : [],
            "name" : "联系方式",
            "field" : "contact_info",
            "dtype" : "string",
            "dvalue" : ""
        }]}
    }})})

这个地方在mysql中的查询可以这样

select json_unquote(json_extract(t.params,'$[0].value')) from it_device  t where 1=1;

当然简单的json字段查询也可以这样 数据表字段->>'$.json字段'

例如 select power->>'$.powerType' from power_history where 1=1;

params:通过查询json格式的数据导入到mysql中的属性数组字段

 但是这块查询的时候有个问题,MongoDB中的数组字段需要排序。怎么排序我还不会,后续再补充下

使用记录中的字段更新另一个字段

db.getCollection('集合名称').find({'code': {'$in' : ['CT_SV','CT_ST']}}).forEach(function(item){                 
   db.getCollection('集合名称').update({"_id":item._id},
          {"$set": {"name":item.desc}},false,true) 
})

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhchyun2008

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

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

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

打赏作者

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

抵扣说明:

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

余额充值