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中的数组字段需要排序。怎么排序我还不会,后续再补充下。文章来源:https://www.toymoban.com/news/detail-486622.html
使用记录中的字段更新另一个字段
db.getCollection('集合名称').find({'code': {'$in' : ['CT_SV','CT_ST']}}).forEach(function(item){
db.getCollection('集合名称').update({"_id":item._id},
{"$set": {"name":item.desc}},false,true)
})文章来源地址https://www.toymoban.com/news/detail-486622.html
到了这里,关于MongoDB结合Robo 3T 1.4.3的简单操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!