转自本人旧博客
title: mongo
date: 2017-07-24 23:44:07
tags: mongo
categories: 数据库
基础整理
一、基础操作
- mac安装
- brew update
- brew install mongodb
- 启动
- mongod
- mongo
-
关闭
- ctrl+c
- mongo
> use admin db
> db.shutdownServer({force: true})
-
修复:
- 删除mongo/mongod.lock
- mongod -f /etc/mongod.conf --repair
- 另一教程里的:mongod --repair --dbpath /mongodb/ --repairpath /mongodb/repair/
-
设置密码
进入admin数据库,设置密码
use admin
db.createUser({ user: “useradmin”, pwd: “adminpassword”, roles: [{ role: “userAdminAnyDatabase”, db: “admin” }] })- mongodb中的用户是基于身份role的
- 该管理员账户的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用户管理身份,’AnyDatabase’ 代表可以管理任何数据库。
- 验证设置是否成功:
db.auth(“useradmin”, “adminpassword”)
如果返回1,则表示成功。
二、pymongo语法
update:
1. false 如果不存在,不插入
2. true 查出来的记录都更新
运算符
- $gt 大于
- $lt 小于
- $gte 大于等于
- $lte 小于等于
样例:
大于0219小于0320
{$gt:"2017-02-19", $lt:"2017-03-20"}
降序排列,限制2
db.Hacked.find({"keyword": "fghk"}).sort({sqlite_id: -1}).limit(2)
查status字段值为“p”或“d”的
db.users.find({status: {$in: ["p", "d"]}}
status为a, age小于30的
db.users.find({status: "a", age:{$lt:30}})
三、其他
1. 数据备份
语法
mongodump -h dbhost -d dbname -o dbdirectory
- -h:MongoDB所在服务器地址
- -d:需要备份的数据库名
- -o:备份的数据存放目录(此目录需要提前建立,默认会建立dump/)
2. 数据恢复
语法
mongorestore -h <:port> -d dbname
- –host <:port>, -h <:port>:
- 服务器地址,默认为: localhost:27017
- –db , -d :
- 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
- –drop:
- 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
- <path>:
- 设置备份数据目录,例如:c:\data\dump\test。
- 不能同时指定
和 --dir 选项
- –dir:指定备份的目录
- 不能同时指定
和 --dir 选项。
- 不能同时指定
3.配置
我的配置文件在/usr/local/opt/mongo/bin/mongod.conf(不知道配置文件在哪,可以用locate mongod查找)
-
bind_ip = 127.0.0.1 mongodb绑定IP地址,只能本地访问数据库,不能指定默认本地所有IP
-
使配置生效:
mongod --fork --config mongod.conf
四、pymongo语法补充
- 查询数据为多个字典嵌套
- 例:数据为 {“dic1”: {“dic2”: “test”}, “dic”: “test”}
- db.tables.find({“dic1.dic2”: “test”})
- 例:数据为 {“dic1”: {“dic2”: “test”}, “dic”: “test”}
- 查询有phone字段的所有数据
- db.trace.find({“phone”: /.*/}).count()
- 查询phone包含****的数据
- db.trace.find({“phone”: /*{4}.*/}).count()
- 查询phone里没有****的数据
- db.trace.find({“phone”: {"$not": /*{4}.*/}}).count()
正则:regex
- import re或$regex