最近一直使用的MongoDB数据库,在使用中用到的一些命令做个记录,方便以后查看
事务超时设置为***秒:
db.adminCommand({setParameter:1,transactionLifetimeLimitSeconds:3600})
修改默认内存配置
【分页查询缓存超出32M后会报错使用此命令解决或给字段加索引】
db.adminCommand({setParameter:1,internalQueryExecMaxBlockingSortBytes:335544320})
插入
db.getCollection(‘user’).insert({“user”:“dd”});
MongoDB更新命令【将id为11的数据email属性改为123,age属性改为12】
db.getCollection(‘user’).update({“id”:“11”},{$set:{“email”:“123”,“age”,“12”}});
根据字段resourceTypeId的值批量修改字段resourceTypeCode的值
db.getCollection(‘appResourceEntity’).update({resourceTypeId:""},{$set:{resourceTypeCode:""}},false,true)
模糊查询
db.getCollection(‘user’).find({“name”:/条件/});
以条件开头:db.getCollection(‘user’).find({“name”:/^条件/});
以条件结尾:db.getCollection(‘user’).find({“name”:/条件^/});
select * from user where name like “%条件%”
拷贝数据库
db.copyDatabase(‘ngiam-db’, ‘ngiam-db-bat’);
删除数据库(拷贝改名、删除原库)
db.copyDatabase(‘old_name’, ‘new_name’);
use old_name
db.dropDatabase();
大于:KaTeX parse error: Expected '}', got 'EOF' at end of input: …).find({"age":{gt:16}});
大于等于:KaTeX parse error: Expected '}', got 'EOF' at end of input: …).find({"age":{gte:17}});
小于:KaTeX parse error: Expected '}', got 'EOF' at end of input: …).find({"age":{lt:12}});
小于等于:KaTeX parse error: Expected '}', got 'EOF' at end of input: …ind({"number":{lte:13}});
不等于:KaTeX parse error: Expected '}', got 'EOF' at end of input: …ind({"number":{ne:15}})
select * from user where number != 15;
等于:$eq(等效于直接条件查询)
查看mongo配置设置
use admin
db.runCommand({getParameter : ‘*’})
判断一个字段是否存在
db.cited_papers_new.find(
{‘title2titles.0’: {‘KaTeX parse error: Expected 'EOF', got '}' at position 14: exists': true}̲, # title2t…exists’: false}} # result的第一个值:不存在
)
// 查询manager不为空的用户并按照最后修改时间倒序
db.getCollection(‘userEntity’).find({KaTeX parse error: Expected '}', got 'EOF' at end of input: and:[{manager:{ne:""}},{manager:{$exists:true}}]}).sort({lastModifiedDate:-1})
语句in
db.getCOllection(‘user’).find ({“number”:{$in:[‘11’,‘222’]}})
select * from user where number in(11,222)
语句and
db.getCollection(‘user’).find({“name”:{liu/},“age”:{$gtr:10}})
select * from user where name like = “liu%” and age >=10
语句or
db.getCollection(‘user’).find($or:[{“name”:“liu”},{“ctest”:“mongodb”}]);
select * from user where name = ‘liu’ or ctest = ‘mongodb’;
时间查询
db.getCollection(‘user’).find({“createTime”:{KaTeX parse error: Expected '}', got 'EOF' at end of input: …Z"),"modTime":{lte:new Date(“2019-10-18TO10:23.19OZ”)}}});
select * from user Where create > ‘2019-10-10 9:23.23’ and modTime <= ‘2019-10-18 10:23.19’;
db.getCollection(‘userEntity’).find({“createdDate”:{KaTeX parse error: Expected 'EOF', got '}' at position 26: …e("2020-11-10")}̲}) 2020-11-10之…and:[{“createdDate”:{KaTeX parse error: Expected 'EOF', got '}' at position 26: …e("2020-11-23")}̲},{"userClass":…gt:new Date(“2020-12-16”)}})
sort升序
db.getCollection(‘user’).find().sort({“age”:1});
select * from user order by age asc
sort降序
db.getCollection(‘user’).find().sort({“age”:-1});
select * from user order by age desc
count语句
db.getCollection(‘user’).find({“user” : “A”}).count();
select count(1) from user where ‘user’ = ‘A’;
备份mongo数据库
mongodump -u xxx账号 -p xxx密码 -h 127.0.0.1 -d 数据库名db -o /home/备份文件地址
恢复mongo数据库
mongorestore -h <:port> --drop -d dbname
mongorestore -h 127.0.0.1:27017 --drop -d 库名 --dir D:\mgodb\db\abc 文件地址
–host <:port>, -h <:port>:
MongoDB所在服务器地址,默认为: localhost:27017
–db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
–drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。
你不能同时指定
–dir:
指定备份的目录
你不能同时指定
mongodb库表数据导出
mongoexport -h 172.16.17.160:27017 -u xxx -p xxx -d 库名db -c 表名 --type=json -o /home/data/abc.json
========================================
将int类型转换为string类型
db.userNameEntity.find({_id:{$exists:true}}).forEach(function(x){
x.usernameInt=x.usernameInt+"";
db.userNameEntity.save(x);//保存
});
mongodb update 的用法:
db.table_name.update(where,setNew,issert,multi );
参数解释:
where:类似于sql中的update 语句where后边的查询条件
setNew:类似于sql中update语句中set后边的部分,也就是你要更新的部分
upsert:如果要更新的那条记录没有找到,是否插入一条新纪录,默认为false不插入,true为插入
multi :是否更新满足条件的多条的记录,false:只更新第一条,true:更新多条,默认为false
示例:
db.sms_user.update({“state”:0},{$set:{“addUser”:"",“nickName”:"",“area”:""}},f
alse,true);
相当于:
update sms_user set addUser="",nickName="",area="" where state=0;
更新表sms_user中所有state=0的记录
ok===