MongoDB

MongoDB

1 标准的URI连接语法

mongodb://[username:password@]host1[:port1],host2[:port2]...hostN[:portN]

eg:

mongodb://localhost    #使用默认端口连接MongoDB的服务

2 数据库相关操作

2.1 创建数据库

如果数据库不存在则创建,如果存在就切换到指定数据库

刚创建的数据库查看的时候不会显示,需要插入数据才能显示

use DATABASE_NAME   

2.2 查看数据库

show dbs

2.3 删除当前数据库

use test
db.dropDatabase()

3 集合相关操作

3.1 创建集合

eg:

	db.createCollection("col_1")
	db.createCollection("mycol",{capped:true,autoIndexId:true,size:6142800,max:10000})
	db.mycol2.insert({"name" : "默认创建集合并插入数据"})

db.createCollection(NAME,OPTION)

NAME:要创建的集合名称
OPTION:可选参数,指定有关内存大小及索引的选项
    capped:
    	布尔 	(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。
    autoIndexId :
    	布尔 	(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
    size :
    	数值 	(可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。
    max :
    	数值 	(可选)指定固定集合中包含文档的最大数量。

3.2 查看集合列表

show collections

3.3 删除集合

db.集合名.drop()

4 文档操作

4.1 插入文档

eg:

#插入单条数据
>db.集合名.insertOne({'a':3})
#插入多条数据
>db.集合名.insertMany([{'a':1},{'b':2,'c':3},{'d':4}])
or
>db.集合名.insert({title:"插入文档",by:"mongodb"})
or
>document=({title:"插入文档",by:"mongodb"});
>db.集合名.insert(document)

4.2 删除文档

-- 删除条件匹配的第一条
db.集合名.deleteOne(<query>)
-- 删除所有匹配条件的文档
db.集合名.deleteMany(<query>)

db.stu.deleteOne({_id:ObjectId("5c51be1a7a922bd4934c4b0d")})

db.stu.deleteMany({name:'java'})

db.createUser(
 {
    user: "root",
    pwd: "root",
   roles: [ { role: "root", db: "admin" } ]
  }
)

4.3 更新文档

eg:

> db.test.find()
{ "_id" : ObjectId("5c09074c98eda6b11b351a96"), "name" : "菜鸟" }

>db.test.update({"name":"菜鸟"},{$set:{"name":"小白"}})

db.集合名.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)


query : 
	update的查询条件,类似sql update查询内where后面的。
update : 
	update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 
	可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。multi : 
	可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :
	可选,抛出异常的级别。

4.4 查看文档

4.4.1 基础查询命令
db.集合名.find()
db.集合名.find().pretty()  # 格式化显示查询内容
db.集合名.find(<query>,<projection>)

eg:

> db.stu.find()
{ "_id" : ObjectId("5c51bd267a922bd4934c4b0c"), "name" : "julia", "age" : 21 }
{ "_id" : ObjectId("5c5279767a922bd4934c4b14"), "name" : "python", "age" : 23}

> db.stu.find().pretty()
{
	"_id" : ObjectId("5c51bd267a922bd4934c4b0c"),
	"name" : "julia",
	"age" : 21
}
{
	"_id" : ObjectId("5c5279767a922bd4934c4b14"),
	"name" : "python",
	"age" : 23,
	"des" : "heheda"
}

# 通过条件查询后指定返回字段(1:返回,0:不返回。因为_id在指定返回字段是默认返回的,所以这里指定不返回)
> db.stu.find({age:{$lt:22}},{name:1,_id:0}
{ "name" : "julia" }

4.4.2 条件语句查询

条件操作符:

操作格式范例RDBMS中的类似语句
等于{<key>:<value>}db.col.find({"by":"python"}).pretty()where by = 'python'
小于{<key>:{$lt:<value>}}db.col.find({"age":{$lt:50}}).pretty()where age< 50
小于或等于{<key>:{$lte:<value>}}db.col.find({"age":{$lte:50}}).pretty()where age<= 50
大于{<key>:{$gt:<value>}}db.col.find({"age":{$gt:50}}).pretty()where age> 50
大于或等于{<key>:{$gte:<value>}}db.col.find({"age":{$gte:50}}).pretty()where age>= 50
不等于{<key>:{$ne:<value>}}db.col.find({"age":{$ne:50}}).pretty()where age!= 50

AND条件

db.集合名.find({条件1,条件2,...})

eg:

> db.stu.find({age:{$lt:22},name:'julia'})
{ "_id" : ObjectId("5c51bd267a922bd4934c4b0c"), "name" : "julia", "age" : 21 }

OR条件

db.集合名.find({$or:[{条件1},{条件2},...]})

> db.stu.find({$or:[{'name':'python'},{'age':21}]})
{ "_id" : ObjectId("5c51bd267a922bd4934c4b0c"), "name" : "julia", "age" : 21 }
{ "_id" : ObjectId("5c5279767a922bd4934c4b14"), "name" : "python", "age" : 23, "des" : "heheda" }

AND和OR联合使用

> db.stu.find({'des':'heheda',$or:[{'name':'python'},{'age':21}]})

{ "_id" : ObjectId("5c5279767a922bd4934c4b14"), "name" : "python", "age" : 23, "des" : "heheda" }
4.4.3 分页查询
db.集合名.find().limit(数据个数).skip(数据个数)

# 显示所有的
> db.stu.find()
{ "_id" : ObjectId("5c51bd267a922bd4934c4b0c"), "name" : "julia", "age" : 21, "des" : "abc" }
{ "_id" : ObjectId("5c5279767a922bd4934c4b14"), "name" : "python", "age" : 23, "des" : "heheda" }

# 只显示一行
> db.stu.find().limit(1)
{ "_id" : ObjectId("5c51bd267a922bd4934c4b0c"), "name" : "julia", "age" : 21, "des" : "abc" }

#跳过第一行再显示一行
> db.stu.find().limit(1).skip(1)
{ "_id" : ObjectId("5c5279767a922bd4934c4b14"), "name" : "python", "age" : 23, "des" : "heheda" }
4.4.4 排序
db.集合名.find().sort()

# 正序
> db.stu.find({},{name:1,age:1,_id:0}).sort({age:1})
{ "name" : "julia", "age" : 21 }
{ "name" : "python", "age" : 23 }
{ "name" : "java", "age" : 30 }

# 逆序
> db.stu.find({},{name:1,age:1,_id:0}).sort({age:-1})
{ "name" : "java", "age" : 30 }
{ "name" : "python", "age" : 23 }
{ "name" : "julia", "age" : 21 }

http://www.runoob.com/mongodb/mongodb-indexing.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值