你的位置:首页 > 数据库

[数据库]mongoDB 学习笔记(一)安装,启动,增删改查


一、下载·安装·启动

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

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

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

  

  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.使用save函数里,如果原来的对象不存在,那他们都可以向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