Mongo基本设置
1. mongod服务开启: mongod –auth –dbpath /var/lib/mongodb
2. mongodb数据及日志文件存储位置: /var/lib/mongodb /var/log/mongodb
3. mongodb 连接服务及打开shell: mongo 用户所属数据库 -u 用户名 -p 密码 ,也可以直接执行命令“mongo”打开shell,然后进入到对应的数据库中再执行“db.auth(‘user’,’passwd’)”
注意:除了admin数据库的用户对其他数据库都有操作权限之外,每个数据库的用户只对自己的数据库有操作权限
4. 远程连接mongodb mongo 主机ip:27017/数据库 -u 用户名 -p 然后再输入密码
MongoDB 常用命令
1. 查看数据库系统信息
- show dbs
- show collections
- db.stats() :查看当前使用的数据库的信息
- db.myCollection.stats():查看当前数据库中myCollection集合的信息
2. 查看数据库集合的信息
db.myCollection.find():找到myCollection集合中的全部信息,后面常用的函数:
pretty():打印出找到的所有条目、
hasNext():判断当前集合是否还有下一条条目
next():显示当前条目,并将cursor移动到下一个
forEach(<func
>):遍历当前集合的每一个条目,并对其执行func函数
3. 创建用户及修改密码: 进入到对应的数据执行如下代码创建用户
db.createUser(
{
user: 'xxx',
pwd: 'xxx',
roles: [
{role:'read',db:'test'}
]
}
)
执行如下代码修改密码
db.changeUserPassword('用户名','密码')
4. 插入命令
db.mycolleciton.inser()
db.myCollection.insertOne({
name:"果冻",
score:{
"数学":100,
"音乐":94, //中文字符串也可以作为key
})
db.myCollection.insertMany()
5. 查询命令
db.myCollection.find({name:"果冻"})
db.myCollection.find({name:{$in:[ "果冻", "D"]}}) //$表示运算符
db.inventory.find( { status: "A", qty: { $lt: 30 } } ) //and
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } ) //or
db.myCollection.find( { size: { h: 14, w: 21, uom: "cm" } } ) //嵌套查询,被嵌套项必须全部包含,如不能只有“{h:14}”
db.myCollecton.find({"size.h":14})//嵌套查询,用dot来连接嵌套项,但是整个表达式需用引号包住
//对于包含 tags:["red","blank"] 键值对document的collection
db.myCollection.find({tags:["red","blank"]})
db.myCollection.find({tags:"red"})
//dim_cm是一个Array,此外列表中还可以嵌入document
db.myCollection.find( { dim_cm: { $gt: 15, $lt: 20 } } )//dim_cm中任意元素满足gt和lt的任一项
db.myCollection.find({dim_cm:{$elemMatch:{$gt:15,$lt:20}}})//dim_cm中任意元素同时满足gt和lt
db.myCollection.find({"dim_cm.1":{$gt:20}})//dim_cm中的第二个元素大于20
dm.myCollection.find({dim_cm:{$size:3}})
//project field(投影)
db.inventory.find({status:"A"},{item:1}) //相当于select _id,item from dnventory where statud="A",可以声明 _id:0取消_id投影
db.inventory.find({status:"A"},{instock:{$slice:-1}) //$slice表示选择instock的最后一个
//对于为空的键或者不包含的键
db.inventory.find({item:null})//所有item为空后者不包含item的document
db.inventory.find({item:{$type:10}})//所有item为空的document
db.inventory.find({item:{$exits:false}})//所有不包含item的document
6. 更新命令
//对于匹配不到document的命令,update和replace会插入一个document
db.inventory.update()
db.inventory.updateOne(
{ item: "paper" },
{
$set: { "size.uom": "cm", status: "P" },
$currentDate: { lastModified: true }
}
)//如果lastModified不存在,会创建,update不能更改_id,除非用replace
db.inventory.updateMany()
db.inventory.replaceOne(
{ item: "paper" },
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] }
)
7. 删除命令
db.inventory.deleteMany({}) //删除所有
db.inventory.deleteOne({}) //删除匹配的第一个
db.inventory.delete({})
Mongo shell数据类型
1. Date(): return current date as string
2. NumberLong(“12345678”) NumberInt(“12345678”) NumberDecimal(“1213.423452342”): mongo shell将所有的数都默认视为64位浮点数,NumberLong,NumberInt分别将数据作为string接收作为64位和32位整数处理,NumberDecimal将接收String作为128位的浮点数处理
未完,待续