MongoDB边操作边学CRUD
在上一篇安装过程我们已经成功把MongoDB创建为Windows的启动命令,
在http://127.0.0.1:27017/也看到了成功启动的结果
那之后呢?
我们在命令行直接输入
mongo
命令显示了当前MongoDB的信息,当前连接的不是某一个数据库,而是我们的本地页面,那事不宜迟我们赶紧来使用吧
创建数据库
语法
use DATABASE_NAME
示例
要显示新创建的数据库,需要至少插入一个文档,空的数据库是不显示出来的。
删除数据库
语法
db.dropDatabase()
示例
删除数据库test插入文档
文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
语法
db.COLLECTION_NAME.insert(document)
db.collection.insertOne() New in version 3.2
db.collection.insertMany() New in version 3.2
示例
插入一个榴莲比萨pizza是集合名
当然我们也可以使用一个变量定义数据,再插入数据
document=数据
db.pizza.insert(document)
插入数据后,数据自带了ID,id定义看这里
更新
一般使用update()方法,但同时还有另外一个save()方法
要说到save()和insert()的区别了
若新增的数据中存在主键 ,insert() 会提示错误,而save() 则更改原来的内容为新内容。
如:
已存在数据: {_id : 1, " name " : " n1 " },再次进行插入操作时,
insert({_id : 1, " name " : " n2 " }) 会报主键重复的错误提示
save({ _id : 1, " name " : " n2 " }) 会把 n1 修改为 n2 。
相同点:
若新增的数据中没有主键时,会增加一条记录。
已存在数据: { _id : 1, " name " : " n1 " },再次进行插入操作时,
insert({ " name " : " n2 " }) 插入的数据因为没有主键,所以会增加一条数据
save({ " name " : " n2 " }) 增加一条数据。
db.collection.updateOne() New in version 3.2
db.collection.updateMany() New in version 3.2
db.collection.replaceOne() New in version 3.2
语法
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
第一个参数是查找条件,第二个参数是修改内容,第三个参数可选。
upsert:如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :抛出异常的级别。
示例
更新操作有关示例出现修改内容的
$set
,这一类叫做修改器,详情参考这里如果不用$set会怎么样?
删除
语法
db.collection.remove(
<query>,
<justOne>
)
如果 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别。
如果要删除全部数据则>db.col.remove({})
db.collection.deleteOne() New in version 3.2
db.collection.deleteMany() New in version 3.2
示例
查询
语法
db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
查询的进一步学习(排序、索引、投影等)
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
可以传入多个键,等于常规SQL的AND
db.col.find({key1:value1, key2:value2})
一些可能用到的修改器:
$lt <
$lte <=
$gt >
$gte >=
$ne !=
$or OR
>db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
示例
现在数据库test的集合pizza中有如下数据:
查找price<90的:
图片.png