启动MongoDB服务
MongoDB官网下载安装,配置环境,在/bin同级目录下创建目录 /data/db,命令./bin/mongod即可启动MongoDB服务(由于我没有配置全局环境变量,所以需要在后边加上/data/db文件夹的全局路径)。
![](https://i-blog.csdnimg.cn/blog_migrate/542712da10eef2244b0f7db9ba4da57b.webp?x-image-process=image/format,png)
打开新的窗口,执行mongo命令即可进入MongoDB的命令行模式。
![](https://i-blog.csdnimg.cn/blog_migrate/0ce53fdd5164396061ca86fd4e10d662.webp?x-image-process=image/format,png)
基本操作命令
show dbs // 列出所有数据库 。
![](https://i-blog.csdnimg.cn/blog_migrate/af7e6738fa64602887d6c6429db8283d.webp?x-image-process=image/format,png)
use test // 创建及切换数据库,此处直接创建test数据库。
![](https://i-blog.csdnimg.cn/blog_migrate/4d53160855d0876bfb3f84dbd724ccdd.webp?x-image-process=image/format,png)
插入及查询命令
db.user.insert({name:'lujing'}) // 没有user表,则系统会默认创建;db.表名.insert()插入数据库,insert()函数参数为JSON字符串,可带多个参数。
![](https://i-blog.csdnimg.cn/blog_migrate/46fcbd007b457ff47872ab9215bed60c.webp?x-image-process=image/format,png)
db.user.find() // 查询数据库,查询参数为JSON字符串,参数为空表示查询所有。'_id' 字段为Mongodb数据库默认生成的全局唯一的字段;"_id"也可自己定义,但不能重复,不建议自己创建_id字段。
![](https://i-blog.csdnimg.cn/blog_migrate/036a6f9bd6656644b1a5efa3ce580590.webp?x-image-process=image/format,png)
show.collections() // 列出所有当前库下的所有表。
![](https://i-blog.csdnimg.cn/blog_migrate/f091d21a8229aa48da1ea7d2998ea90d.webp?x-image-process=image/format,png)
db.user.count() // 统计表记录数量。
![](https://i-blog.csdnimg.cn/blog_migrate/9cce64ef5016ac69137ae67f576f395f.webp?x-image-process=image/format,png)
更新命令
db.user.update({name:'lujing'},{age:18}) // 更新操作,update()函数至少接收两个参数,第一个为更新条件,第二个参数为更新内容;但是看到更新之后发现age属性更新成功,但是name属性被覆盖掉了,所以此处我们使用 $set更新操作符,只会更新存操作符后边的对应字段,不存在的保持不变。
![](https://i-blog.csdnimg.cn/blog_migrate/07ae1a396568d279664c4cc7f2fb9ea0.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/cfe2d1b9b9a819eed0ab4d04c7d8fbae.webp?x-image-process=image/format,png)
db.user.update({name:'lisi'},{age:99},true) // 当有 更新时不存在的则插入 的需求是,则可以将第三个参数设置为true。如下图,在没有设置第三个参数时试图将{name='lisi'}的那条记录的age属性更新为99,但是没有一条记录收到影响;当添加第三个参数后,则Upsert成功。
![](https://i-blog.csdnimg.cn/blog_migrate/968b491edbc5a06c80118f501e242704.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/ce84bcbf7c79cc27d3c97e9456d18bdb.webp?x-image-process=image/format,png)
db.user.update({name:'金刚狼'},{name:'钢铁侠'},false,true) // 试图将{name=金刚狼}的记录改为钢铁侠,但由于MongoDB自身安全机制的限制,只更新了其中的一条;这是需要用到第四个进行批量更新。同样也由于MongoDB的安全机制的限制,在批量更新是必须使用$set操作符才能更新成功。
![](https://i-blog.csdnimg.cn/blog_migrate/c01c413a133758b84802a302b1e82a1d.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/72e49509e9bb91306ffa263a920bf1d7.webp?x-image-process=image/format,png)
删除
db.user.remove() // remve操作不允许直接删除一张表,‘ERROR:remove needs a query’,必须输入删除条件。
db.user.drop() // 可以直接删除一张表
![](https://i-blog.csdnimg.cn/blog_migrate/36845c92d11a67ac8463117d892d8d47.webp?x-image-process=image/format,png)
db.user.remove({name:'lisi'}); // 删除{name:'lisi'}的记录,不同于update操作,可直接删除多条记录
![](https://i-blog.csdnimg.cn/blog_migrate/c7ed5a4beaf0be0f7b280dac81689dc0.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/8d105d74dca402439dd9decd49b7c0a5.webp?x-image-process=image/format,png)
db.user.find().skip(2).limit(2).sort({age:1}) // 再来一个综合查询:skip(2)及查询的结果集取消前两个;limit(2)及只需要返回两条记录,skip()和limit()函数结合可用于分页查询;sort({age:1})代表age字段正向排序
![](https://i-blog.csdnimg.cn/blog_migrate/7c2a5528a16226e04c73544d8928308d.webp?x-image-process=image/format,png)
各位看官有问题可在下方评论区留言。