MongoDb初识

149 阅读4分钟

MongoDB

安装MongoDB

  • 安装windos 版本
  • ​ mongodb-win32-x86_64-2008plus-ssl-4.0.10-signed
  • ​ 百度云盘 链接:pan.baidu.com/s/1zoRzUMym… ​ 提取码:bj9s
  • 配置环境变量
  • ​ E:\Program Files\MongoDB\Server\4.0\bin
  • 启动服务器时 mongod --dbpath 数据库路径 --port 端口号

基本概念

1.数据库(database)

  • ​ 数据库的服务器 -用来保存数据 mongod 用来启动服务器 4.0版本以上 自动启动
  • ​ 数据库的客户端 -用来操作服务器 对数据进行增删改查的操作 mongo 用来启动客户端

2.集合(collection)

3.文档(document)

  • ​ 在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不 存在会自动创建数据库和集合。

基本指令

  • show dbs show database -显示当前的所有数据库

  • use 数据库名 -进入到指定的数据库中

  • show collections -显示数据库中所有的集合

  • db -db表示的是当前所在的数据库

  • 数据库的CRUD操作

新增文档

//向数据库中插入一个文档
//向集合中插入一个文档 db.<collection>.insert(doc) 会创建一个id  时间戳+机器码 ObjectId()  下划线 _id 可以自己定义
//向test数据库中,stus集合中插入一个新的学生对象
db.<collection>.insertOne() -插入一个文档对象
db.<collection>.insertMany() -插入多个文档对象 []
#回报:   包含以下内容的文件:
#一个acknowledged布尔值,设置为true操作是否以写关注运行或false是否禁用了写关注
#一个insertedIds数组,包含_id每个成功插入的文档的值
try {
   db.products.insertMany( [
      { item: "card", qty: 15 },
      { item: "envelope", qty: 20 },
      { item: "stamps" , qty: 30 }
   ] );
} catch (e) {
   print (e);
}

{
   "acknowledged" : true,
   "insertedIds" : [
      ObjectId("562a94d381cb9f1cd6eb0e1a"),
      ObjectId("562a94d381cb9f1cd6eb0e1b"),
      ObjectId("562a94d381cb9f1cd6eb0e1c")
   ]
}
db.stus.insert({name:"猪八戒",age:20,gender:"男"});
db.stus.insert(
[
{name:"白骨精",age:16,gender:"女"},
{name:"沙和尚",age:36,gender:"男"},
{name:"唐僧",age:18,gender:"男"}
]);
db.stus.insertOne({name:'六耳猕猴'})
db.stus.find();

ObjectId()
id                          name  age gender   
61809e6c89473f3a5dcfbbe1   孙悟空    186180a15645200000cb005ea3   猪八戒    206180a1e145200000cb005ea4   蜘蛛精    166180a20445200000cb005ea5   白骨精    166180a20445200000cb005ea6   沙和尚    366180a20445200000cb005ea7   唐僧 186180a4b545200000cb005eaa   六耳猕猴   
db.<collection>.find() #查询当前集合中的所有符合条件的文档
db.<collection>.findOne() #用来查询当前集合中符合条件的第一个文档
db.<collection>.find({}).count()#用来查询当前结果的数量
#{属性:查询值}  ,区分
db.stus.findOne({name:'孙悟空'})
db.stus.find({age:18,name:'唐僧'})
db.stus.find({age:18}).count() #2

修改文档

语法格式:
db.collection.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 :可选,抛出异常的级别。

db.<collection>.update(查询条件,修改对象) #默认情况下会使用新对象来替换旧的对象
#注意:update 默认只改一个
db.stus.update({name:"孙悟空"},{age:20}) # 61809e6c89473f3a5dcfbbe1   20    
#需要使用修改符 $set 可以用来修改和设置
#$set 修改字段
db.stus.update(
   {"_id":ObjectId("61809e6c89473f3a5dcfbbe1")},
   {$set:
      {
      name:"孙悟空",
      gender:"男",
      address:"武汉市"
      }
   }
)
#$unset 删除字段
db.stus.update(
   {"_id":ObjectId("61809e6c89473f3a5dcfbbe1")},
   {
      $unset:{
         address:""
      }
   }
)
db.<collection>.updateMany() #同时修改多个符合条件的文档
db.<collection>.updateOne() #修改一个符合条件的文档

删除文档

语法格式:
db.collection.remove(
   <query>,
   {
     justOne: <boolean>,   #true 只删除一个
     writeConcern: <document>
   }
)
#删除  很少用 数据库一般不会删除
db.<collection>.remove({}); #清空集合  性能很差  一个一个删
#可以根据条件来删除文档,传递的条件和方式和find()一样,默认情况删除多个
db.<collection>.deleteOne();
db.<collection>.deleteMany();

db.<collection>.drop();#直接删除集合
db.dropdatabase();
db.stus.remove({"_id":ObjectId("61809e6c89473f3a5dcfbbe1")})
db.stus.remove({age:18},true)
db.stus.find({isDel:0})