关于mongo的一些常用命令

最近一直使用的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 /–dir
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 选项,–dir也可以设置备份目录。
–dir:
指定备份的目录
你不能同时指定 和 --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===

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xt7sky

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

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

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

打赏作者

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

抵扣说明:

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

余额充值