博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongoDB 学习笔记(一)安装,启动,增删改查
阅读量:7118 次
发布时间:2019-06-28

本文共 4041 字,大约阅读时间需要 13 分钟。

一、下载·安装·启动

  学习mongoDB第一步下载安装,度娘有教程不详细解释,说一下重要的点。

  1 解压安装包后创建数据库文件的存放位置,例如:d:/mongodb/data/db;

  2 启动:D:/mongodb/bin>mongod --dbpath D:\mongodb\data\db;

  

  可见使用的端口是27017,启动成功;另一种查看办法,访问http://localhost:27017 。

  3 可以设置日志的存放位置。

    (1)新建文件D:\mongodb\log\mongo.log;

    (2)新建配置文件D:\mongodb\mongo.config  

    内容:

    dbpath=D:\mongodb\data\db

    logpath=D:\mongodb\log\mongo.log 

    (3)配置:管理员身份  D:\mongodb\bin>mongod --config D:\mongodb\mongo.config。

    (services.msc命令可以查看修改各服务的状态)

二、进入数据库(新启动一个窗口)

  mongo;  进入   exit;  退出

  show dbs;    查看数据库s

  use  xxdb;   使用**数据库

  show collections;   查看集合

三 mongoD设置用户名密码

  MongoDB默认设置为无权限访问限制,所以上面可以直接进入,而不需要用户名,密码。

  show dbs;

  use admin; 你可以发现一个system.user表, 这就是用户表,存放超级管理员的。

  db.createUser('ab','ab');

  想要使用用户名密码登录,还需要修改启动方式,重新启动并在原来的基础上增加 -auth

  D:/mongodb/bin>mongod --dbpath D:\mongodb\data\db -auth

  这时已经不能查看集合的内容了。

  db.auth('ab','ab');  使用账号密码登录 成功返回1,失败返回0

  单独访问数据库(直接登录某数据库),需要权限访问的情况,用户名密码并非超级管理员,而是该库system.user表中的用户;

  不单独访问(先进入admin库,再转到其他库,则使用超级管理员足矣)

四 基本语法 增删改查

  database methods:

  db.createUser(username,password);

  db.auth(username,password);

  db.cloneDataBase(fromhost);  从目标服务器可控一个数据库

  db.copyDatabase(fromdb,todb,fromhost)  复制数据库 可以改名字``````这部分用到较少,主要是第二部分。

  collection methods:

  db.collectionName.find({"id":10}).skip(3).limit(3).sort({"age":-1}).count();

  db.collectionName.findOne(...);

  db.collectionName.remove();

  db.collectionName.insert();

  db.collectionName.update();

  db.collectionName.getDB();返回名字

  db.collectionName.getIndexes();索引信息

  db.collectionName.group({key,reduce,initial,[keyf,cond,finalize]})

  key:分组元素;reduce:自定义function方法对组内数据进行处理;initial:初始化结果集;keyf:可以对key进行处理并代替key;cond:先用cond过滤再分组;finalize:function方法对上面的结果再进行处理。

  db.collectionName.renameCollection(newName);..........................

  1)增

  db.collectionName.insert({name:"wangzhanting",age:[15,25,35,45,55]});

  db.collectionName.save({name:"wangzhanting",age:[15,25,35,45,55]});

  两者用法类似,mongodb的save和insert函数都可以向collection里插入数据,但两者是有两个区别:

  1.使用里,如果原来的对象不存在,那他们都可以向collection里插入数据,如果已经存在,save会调用update更新里面的记录,(而insert则会忽略操作,也就是不能插入)。
  2.insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。

  2)删

  db.collectionName.remove(DELETION_CRITERIA);删除符合条件的文档

  db.collectionName.remove(DELETION_CRITERIA,1); 只删除第一个符合条件的文档

  db.collectionName.remove(); 删除这个集合

  db.dropDatabase(); 删除这个集合

  3)改

  save方法也有更新的作用。

  db.collectionName.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},1,1)

  1 需要更新的条件  2 更新的内容的对象  3 如果没有符合条件的记录,是否新增,1 就新增,默认为0    4 如有有多个符合条件的记录,是否全部更新

  使用到了$语法,下面做详细介绍

  4)查

  db.collectionName.find({"id":10},{"age":1}).skip(3).limit(3).sort({"age":-1}).count();

  find后是查询条件,投影(显示哪几个属性),skip指忽略前几条;limit指只查询前几条;sort指按某字段排序;count计数。

  $语法:

  db.collection.find({x:{$gt:10,$lt:30}});

  db.collection.find({x:{$gt:new Date("2012/01/01")}});   $lt 小于 $lte 小于等于 $gt 大于  $gte 大于等于  $ne  不等于

  db.collection.find({x:{$in:[0,1,2]}});

  db.collection.find({x:{$nin:[0,1,2]}});      $in 包含  $nin   不包含

  db.collection.find({$or:[{age:10},{name:"aaa"}]})

  db.collection.find({age:{$all:[1,2,3]}})       $all 匹配所有

  db.collection.find(name:{$exists:false})      查找属性不存在的文档

  db.collection.find(name:null);            可以查到没有name属性或值为null的文档

  db.collection.find(name:{$in:[null]},$exists:true)  可能存在一种情况,name存在但是null,这条语句可以查到

  db.collection.find({age:{$mod:[5,1]}})        取模,除5余1的文档

  db.collection.find({age:{$not:{$mod:[5,1]}}})

  db.collection.find({name:})             正则表达式,这部分稍后

  db.collection.find({num:{$size:2}})          筛选数组大小

  db.collection.find({num:{$slice:x}})          返回数组的一个子集,x为正,则是前x个,x为负,则是后x个;x:[1,1],第一个参数是偏移量(不从第一个开始),第二个是选几个

  $where   使用到了javascript,暂不详解

  db.collection.update({age:10},{$set:{name:""}})      局部更新

  db.collection.update({age:10},{$unset:{name:1}})    局部删除

  db.collection.update({age:10},{$inc:{age:1}})       加1

  db.collection.update({age:10},{$push:{score:10}})    向数组内添加记录

  ·········诸多方法不能穷举,可以参照官网https://docs.mongodb.org/manual/reference/operator/update/push/#up._S_push d

转载于:https://www.cnblogs.com/py2015yq/p/5152168.html

你可能感兴趣的文章
找到dht网络的节点了
查看>>
国内整C多IP服务器怎么搭建代理IP,又怎么区分代理IP呢
查看>>
人工智能+教育的应用——教育的安全
查看>>
一种面包屑导航
查看>>
shell脚本练习
查看>>
pdf页眉页脚设置步骤
查看>>
MySQL常用命令
查看>>
js如何保证iframe里的内容,显示在父窗口
查看>>
加速你的企业数字化转型,首先做到这一步!
查看>>
Mysql复制架构
查看>>
Docker封装Java环境镜像(Alpine+OpenJDK)
查看>>
我的友情链接
查看>>
VC编译项目时缺少atlrx.h的解决办法
查看>>
Python OpenCV学习笔记之:使用MOG2视频背景消除
查看>>
8月第三周网络安全:境内感染网络病毒主机数73.7万个
查看>>
【Android】Service生命周期回顾
查看>>
11月国内浏览器市场份额:IE、Chrome均遭蚕食
查看>>
Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
查看>>
【公开课视频】ASP.NET MVC+EF入门-20130315
查看>>
Thinkphp 公共函数自动加载
查看>>