MongoDB 命令 (MongoDB Shell)

Posted handscool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 命令 (MongoDB Shell)相关的知识,希望对你有一定的参考价值。

1、我们 mongodb 安装成功后,用上一篇的方法启动 mongodb服务 然后使用 mongodb shell 来做数据库的增删改查

2、创建数据库

  语法:

use 数据库名称

  案例:

> use juyou
switched to db juyou
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

  这时创建完成过,使用命令查询数据库却没有我们刚创建的数据库,这时因为刚创建的数据库没有数据,下面我们在数据库中插入一条数据

> db.juyou.insert({"name":"聚优福利"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin   0.000GB
config  0.000GB
juyou   0.000GB
local   0.000GB

  这时就能看到刚刚创建的数据库了

3、删除数据库

  语法:

db.dropDatabase()

  案例:

  首先我们先查询一下所有的数据库

> show dbs
admin   0.000GB
config  0.000GB
juyou   0.000GB
local   0.000GB

  然后我们可以使用 db 来查看当前的数据库

> db
juyou

  当前链接的数据库就是 juyou,如果不是可以使用 use juyou 命令切换到 juyou 数据库

> use juyou
switched to db juyou

  执行删除命令

> db.dropDatabase()
{ "dropped" : "juyou", "ok" : 1 }

  然后再我们再查询一下所有数据库

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

  已经成功删除了

4、创建集合

  语法:

db.createCollection(name, options)

  name:集合名称

  options: 可选参数 

  案例:创建一个名为 userinfo 的集合

> db.createCollection("userinfo")
{ "ok" : 1 }
> show collections
userinfo

  创建成功后可以使用  show collections  命令查询已有集合

 5、插入文档

  语法:

db.集合名称.insert(document)

  案例:

  在 juyou 集合下的 userinfo 文档中插入一条数据

> db.juyou.userinfo.insert({name:"郭大爷","sex":"","age":"不详"})
WriteResult({ "nInserted" : 1 })
> db.juyou.userinfo.find()
{ "_id" : ObjectId("5abaf679a3aadbe625070c4f"), "name" : "郭大爷", "sex" : "", "age" : "不详" }

  插入成功后,可以使用  find()  来查询刚刚插入的数据,下面会对查询做详细的讲解,这里不多做解释

  可以看到插入数据后,多了一列 _id 的数据,在文档中 mongodb 会将 _id 字段自动设置为主键,如果不指定mongodb会自动生成

  自动生成的 ObjectId 是由时间戳、MachineID(电脑的 mac 地址)、进程ID以及自增计数器组成的,基本上不会重复

> db.juyou.userinfo.insert({"_id":1,name:"郭少爷","sex":"","age":"不详"})
WriteResult({ "nInserted" : 1 })
> db.juyou.userinfo.find()
{ "_id" : ObjectId("5abaf679a3aadbe625070c4f"), "name" : "郭大爷", "sex" : "", "age" : "不详" }
{ "_id" : 1, "name" : "郭少爷", "sex" : "", "age" : "不详" }

  也可以在插入数据时指定 _id 值,在之前使用mongodb开发中会指定给 _id 值,使用GUID(全球唯一标识)代替

  我们也可以先将要插入的数据定义成变量

> var user = {name:"郭老师",sex:"",age:"18"}
> db.juyou.userinfo.insert(user)
WriteResult({ "nInserted" : 1 })
> db.juyou.userinfo.find()
{ "_id" : ObjectId("5abaf679a3aadbe625070c4f"), "name" : "郭大爷", "sex" : "", "age" : "不详" }
{ "_id" : 1, "name" : "郭少爷", "sex" : "", "age" : "不详" }
{ "_id" : ObjectId("5abb05afa3aadbe625070c50"), "name" : "郭老师", "sex" : "", "age" : "18" }

  mongodb 在3.2版本后 提供了一次插入多条数据的方法 insertMany() ,我们下面把上面的三条数据删除,然后试一下一次插入多条数据

> db.juyou.userinfo.remove({})
WriteResult({ "nRemoved" : 3 })
> db.juyou.userinfo.find()
> var users = [
...   {
...     _id:1,
...     name:"郭大爷",
...     sex:"",
...     age:"80"
...   },
...   {
...     _id:2,
...     name:"郭老师",
...     sex:"",
...     age:"不详"
...   },
...   {
...     _id:3,
...     name:"郭少爷",
...     sex:"",
...     age:"18"
...   }
... ]
> db.juyou.userinfo.insertMany(users)
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }
> db.juyou.userinfo.find()
{ "_id" : 1, "name" : "郭大爷", "sex" : "", "age" : "80" }
{ "_id" : 2, "name" : "郭老师", "sex" : "", "age" : "不详" }
{ "_id" : 3, "name" : "郭少爷", "sex" : "", "age" : "18" }

  这样我们可以直接插入一个数组

6、更新文档

  语法:

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

  query:条件,相当于sql update时where条件

  update: 要更新的内容,类似 sql 的 set 后面的内容

  案例:我们先查询一下郭老师的年龄是不详,现在我们根据主键_id来把年龄更新成20岁

> db.juyou.userinfo.find()
{ "_id" : 1, "name" : "郭大爷", "sex" : "", "age" : "80" }
{ "_id" : 2, "name" : "郭老师", "sex" : "", "age" : "不详" }
{ "_id" : 3, "name" : "郭少爷", "sex" : "", "age" : "18" }
> db.juyou.userinfo.update({"_id":2},{$set:{"age":"20"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.juyou.userinfo.find()
{ "_id" : 1, "name" : "郭大爷", "sex" : "", "age" : "80" }
{ "_id" : 2, "name" : "郭老师", "sex" : "", "age" : "20" }
{ "_id" : 3, "name" : "郭少爷", "sex" : "", "age" : "18" }

  已经成功将郭老师的年龄改成20,然后我们看到在更新命令中又一个 $set 的关键词,这个是更新操作符,下面来介绍一下

  

 

以上是关于MongoDB 命令 (MongoDB Shell)的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 命令 (MongoDB Shell)

怎样在linux的shell脚本中连接mongodb插入

MongoDB shell 介绍

怎样在linux的shell脚本中连接mongodb插入

MongoDB基础篇:MongoDB Shell命令大全

MongoDB Shell 命令