MongoDB边操作边学CRUD

2017-12-23  本文已影响0人  灯不梨喵

在上一篇安装过程我们已经成功把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
上一篇下一篇

猜你喜欢

热点阅读