MongoDB常用操作练习

最近在自学MongoDB,

连接数据库
mongo.exe test

设置访问限制后连接
mongo.exe -u root -p test

设置访问限制
db.addUser("root","111111");
mongo.exe auth;

创建集合(数据库)
db.createCollection("mydatabase",{size:1000000,max:100});

切换数据库
use mydatabase;

创建表(student)
db.student.save({_id:1,classid:1,age:18,name:"little1",love:["football","swing","cmpgame"]});
db.student.save({_id:2,classid:2,age:19,name:"little2",love:["play"]});
db.student.save({_id:3,classid:2,age:20,name:"little3"});
db.student.save({_id:4,classid:1,age:21,name:"little4"});
db.student.save({_id:5,classid:1,age:22,name:"little5",opt:"woshisheia"});
db.student.save({_id:6,classid:2,age:23,name:"23little4"});

查询:
db.student.find();

//从第二条查寻,查出三条
db.student.find().skip(1).limit(3);

//查询出name为little1的数据
db.student.find({name:"little1"});

//查询出19<age<=21的数据
db.student.find({age:{$gt:19,$lte:21}});

//$mod:查询出age为奇数的数据(对2求余为1即为奇数)(这里请注意[2,1]的位置不能错)
db.student.find({age:{$mod:[2,1]}});

//$exists:查询出存在opt字段的数据,  存在true,不存在false
db.student.find({opt:{$exists:true}});    db.student.find({opt:{$exists:false}});

//查询出name不为little2的数据
db.student.find({name:{$ne:"little2"}});

//$in:查询出age为16,18,19的数据
db.student.find({age:{$in:[16,18,19]}});

    
//$nin:查询出age不为16,18,19的数据
db.student.find({age:{$nin:[16,18,19]}});

//$size:查询出love有三个的数据
db.student.find({love:{$size:3}});

//查询出name不是以litt开头的数据
db.student.find({name:{$not:/^litt.*/}});

//查询age>20的数据
db.student.find({age:{$gt:20}});

db.student.find({$where:"this.age>20"});

db.student.find("this.age>20");

var f = function(){return this.age>20};
db.student.find(f);


//sort:1升序,   -1降序
按age升序:db.student.find().sort({age:1});   按age降序:db.student.find().sort({age:-1});


//count:查询数据条数
db.student.find().count();

//like:模糊查询

db.student.find({name:/little/});    相当于 select * from student where name like "%little%";

db.student.find({name:/^little/});    相当于 select * from users where name like "little%";

//distinct:去重

db.student.distinct(‘name‘);

//type:属性类型判断

db.sutdent.find({"title" : {$type : 2}})         db.student.find({"title" : {$type : ‘string‘}})

//查询 name为little1的学生,并且只显示 age,name两个字段
db.student.find({name:"little1"},{name:1,age:1})       等价于 select name,age from student where name = "little1"

//and:查询 name为little1,age为18的学生,并且只显示 age,name,love三个字段
db.student.find({name:"little1",age:18},{name:1,age:1,love:1})  等价于 select name,age,love from student where name = "little1" and age = 18

//or:查询 name为little3或age为19的学生
db.student.find({‘$or‘:[{name:‘little3‘},{age:19}]})  等价于 select * from student where name = "little3" or age = 19

//null:查询age为null的数据

db.student.find({age:null})

//

删除:
//删除age为20的数据
db.student.remove({age:20});
//删除表
db.student.drop();

存储过程:
db.system.js.save({_id:"mypro",value:function(){
     var total = 0;
     var arr = db.student.find().toArray();
     for(var i=arr.length-1;i>=0;i--){
         total += arr[i].age;
     }
     return total;
}});
//查询存储过程
db.system.js.find();
//执行存储过程
db.eval("mypro()");

分组统计(MapReduce):
var mapfun = function(){emit(this.classid,1)}
var reducefun = function(key, values){
      var x = 0;
      values.forEach(function(v){x+=v});
      return x;
}

var finafun = function(key, value){
     return {classid:key,count:value};
}

res = db.runCommand({
      mapreduce:"student",
      map:mapfun,
      reduce:reducefun,
      out:student_res,
      finalize:finafun
      //可加入条件
     //query:{age:{$gt:19}}
});

//查询统计结果(分班级统计人数)
db.student_res.find();

原文地址:https://www.cnblogs.com/DDgougou/p/10200281.html

时间: 2024-10-29 16:06:42

MongoDB常用操作练习的相关文章

MongoDB常用操作

1.MongoDB常用操作 1.1数据库的操作命令 1.创建数据库,使用命令 use 数据库名称 ,如 use sxf. *注意: 1.use 命令后跟的数据库名,如果存在就进入此数据库,如果不存在就创建,所以这种创建方式又叫隐式创建 2.使用命令use sxf创建数据库后,并没有真正生成对应的数据文件,如果此时退出,此数据库将被删除,只有在此数据库中创建集合后,才会真正生成数据文件 2. 删除当前数据库,使用命令 db.dropDatabase() 3.查看所有数据库,使用命令 show db

MongoDB 常用操作

MongoDB常用操作

MongoDB 常用操作及学习资料收集

文档链接 MongoDB Tutorial MongoDB 常用操作 MongoDB 常用操作列表如下: 操作 示例 描述 本地登录 mongo 直接执行 mongo 命令 远程登录 mongo ip:27017 27017 为默认端口 查看数据库列表 show dbs - 切换数据库 use db-name 如果该数据库不存在,则会自动创建 创建数据库 同上 同样使用 use 语句 销毁数据库 db.dropDatabase() 先使用 use 语句切换到要删除的数据库 创建 Collecti

MongoDB常用操作一查询find方法db.collection_name.find()

来:http://blog.csdn.net/wangli61289/article/details/40623097 https://docs.mongodb.org/manual/reference/sql-aggregation-comparison/ [第一个查询参数] find函数第一个参数是一个文档,其中给出了我们要查询集合中什么样文档的描述.如果我们要查询所有文档,可以不带任何参数调用find函数,或第一个参数为空文档{},如下例: [javascript] view plainc

MongoDB常用操作总结

====================================MGDB的操作====================================== 0.创建数据库时使用(use 数据库名)来创建,但如果use命令之后没有进行其它操作(如:给定list)直接退出,那么use命令执行出来的数据库将会从缓冲池中被清除,并没有真正    创建!: 1.use命令不但能声明创建数据库而且还能可以***切换数据库***: 2.删除一个数据库时需切换到该数据库后使用 db.dropDataba

MongoDB常用操作--集合2

1.查询集合中的文档,可以使用命令 db.集合名称.find({条件}),或者使用 db.集合名称.findOne() 查询第一个文档 2.查询集合中的文档,返回某些特定的键值 3.查询集合中的文档 ,使用条件表达式(<, <=, >, >=,!=) //大于: field > value db.collection.find({field:{$gt:value}}); //小于: field < value db.collection.find({field:{$lt

MongoDB常用操作--集合3

1.更新集合中的文档,语法如下: db.collection.update(criteria,objNew,upsert,multi) 参数说明: criteria:用于设置查询条件的对象 objNew:用于设置更新内容的对象 upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1 multi:如果有多个符合条件的记录,是否全部更新,取值为0或1 注意:默认情况下,只会更新第一个符合条件的记录 一般情况下后两个参数分别为0,1 ,即: db.collection.update(c

MongoDB常用操作--集合1

1.创建集合有两种方式,显示创建和隐式创建 显示创建可以使用命令 db.createCollection("集合名称") 隐式创建可以使用命令 db.集合名称.insert({}),指创建集合并同时向集合中插入数据,例如:db.customer.insert({name:"jack"}) 删除集合使用命令:db.集合名称.drop() 2.向集合添加文档 使用命令 db.集合名称.insert({}),例如: db.user1.insert({name:"

mongodb常用操作——命令行

增: db: use  db_name  //有的话就是切换 tabale: 并没有直接命令,插入文档时自动生成 file: db.table_name.insert({'test':'ok'}) 字段: db.table_name.update({'test':{$exists:true}},{$set:{'test2':'yes'}},{multi:true})   //往含有'test'字段的所有文档插入'test2'字段 db.table_name.update({'test':{$ex