mongoDB 安装 和简单命令


mongo官网 下载地址 http://www.mongodb.org/downloads

vue工具 下载 http://www.mongovue.com/downloads/


建一个文件夹,放解压后的mongo文件,在新建一个放 指定数据库 

做一个变量,指定bin

下面文件夹和路径可以自定义

mongod --dbpath d:\installSoft\mongoDbDATA

mongo 127.0.0.1:27017/admin


下面是简单命令

下载mongodb


指定路径data


mongod --dbpath e:\mongoDB\mongoDbDATA


mongo 127.0.0.1:27017/admin


use dbname  --新建数据库


db.dropDatabase() --删除


show dbs --显示


show collections --显示集合


db.persons.insert({name:"hello"}) --插入数据 


db.persons.find()


db.persons.update({name:"hello"},{$set:{name:"newh"}})


var p=db.persons.findOne()
p
db.persons.update(p,{name:"updateV"})


db.persons.update({name:"updateV"},{$set:{age:1,name:"newV"}})


db.persons.remove({age:1}) --删除数据


db.persons.drop() --删除 persons


db.help() 



function insertxx(obj){
db.getCollection("dbName").text.insert(obj)
}


insertxx({name:"hello"})


db.getCollection("dbName").find()


db.eval("return 'mongodb'")


for(var i=0;i<10;i++){
 db.pp.insert({name:i})
}


db.pp.insert({_id:"重复"}) --报错
db.pp.save({_id:"重复"}) --更新


db.pp.remove() --集合删除 索引不会删除


db.system.indexes.find()


db.pp.remove({_id:1}) --条件删除


db.docName.update({查询器},{修改器}) 


insertOrUpdate --默认false 
db.docName.update({查询器},{修改器},true)


--批量更新  false更新不保存,true批量(默认只更新第一条数据)
db.pp.update({name:"hello"},{$set:{name:"helloWrold"}},false,true)


$set
$inc  -- 追加 数字
$unset --去掉指定健
$push  --汪加数组 db.test.update({_id:1},{$push:{books:["01","02","03"]}})
 db.test.update({_id:1},{$pushAll:{books:["01","02","03"]}})


$addToSet --如果数组中没才添加
db.test.update({_id:1},{addToSet{books:"hellos"}})


$pop -1删除第一个值  1 删除最后一个值 1


$pull --删除一个被指定的数值
$pullAll db.test.update({_id:1},{$pullAll:{books:["aa","bb"]}})


$.在数组对像中修改
db.test.update({"books.type":"db"},{$set:{"books.$.author":"liangrui"}})


--把有的不加入,没有的加入 
 db.test.update({_id:2},{$addToSet:{books:{$each:["js","db"]}}})






 
--runCommand 只能修改一条娄据    new 返回 pp是更新前的还是更新后的


 
ps=db.runCommand({
   "findAndModify":"test",
   "query":{"name":"hello"},
   "update":{"$set":{"age":"wwww"}},
   "new":true
})




ps.value


db.rui.find({},{_id:0,name:1})-- 查询指定列 {条件}{显示}  0不显示


m 在>25 <30之间的数()
db.rui.find({m:{$gte:25,$lte:30}},{_id:0,name:1})
--不等于
db.rui.find({name:{$ne:"hello"}},{})
--in  在
db.rui.find({name:{$in:["hello"]}},{})


--nin  不在
db.rui.find({name:{$nin:["hello"]}},{})


--or  c大于20 或者m大于30的数据
db.rui.find({$or:[{c:{$gt:20}},{m:{$gt:30}}]},{})


--查询为null 
db.rui.find({sex:{$in:[null]}},{_id:0,name:1,sex:2})


--正则查询
db.rui.find({name:/ji/i},{_id:0,name:1})


--取返
db.rui.find({name:{$not:/ji/i}},{_id:0,name:1})


--喜欢js 和java书的学生
db.rui.find({books:{$all:["js","java"]}},{books:1,_id:0,name:2})
--查询第二本是c++的学生
db.rui.find({"books.1":"c++"},{books:1,_id:0,name:2})


--查询指定长度数组$size 它不能与比较查询符一起使用
查询 出喜欢 的书 数量是4本的学生
db.rui.find({books:{$size:3}})


--查询出喜欢的书箱数量大于2本的学生
db.rui.update({},{$set:{size:3}},false,true)
db.rui.find()


--第次加减书的时候 更新size
db.rui.update({},{$set:{size:3}},false,true)
db.rui.update({name:"jim"},{$push:{books:"c"},$inc:{size:1}})
--书本==5的
db.rui.find({size:4})


--查询jim喜欢书的数量


 var jim=db.rui.find({name:"jim"})
 while(jim.hasNext()){
 obj=jim.next();
 print(obj.books.length)
 }


shell 是个js的引擎  要用驱动包

$slice  指定数组的内部值
 db.rui.find({name:"jim"},{books:{$slice:[1,3]},_id:0})


 -1 最后一本书
 db.rui.find({name:"jim"},{books:{$slice:-1},_id:0})


 --文档查询
var jim=[
         {
		   school:"k",
           score:"a"
		  },
		     {
		   school:"l",
           score:"b"
		  } ,
		  {
		   school:"j",
           score:"p+"
		  }
		  ]
db.rui.update({name:"jim"},{$set:{school:jim}})


--必须顺序一样,全部指定
db.rui.find({school:{school:"k",score:"a"}},{_id:0})


--优化
db.rui.find({"school.score":"a","school.school":"k"},{_id:0,school:1})


--$elemMatch解决顺序的问题 和 遍历 全部对象查询
db.rui.find({school:{$elemMatch:{school:"k"}}},{_id:0,school:1})




$where
  查询age大于22,喜欢c++ 在k学校上过的学生


  db.rui.find({"$where":function(){
  //得到查询结果的每一条文档
  var books=this.books;
  //得到文档中的school对象
  var school=this.school;
  //如果年纪>=22
  if(this.age>22){
  var  cjj=null;
  //遍历数据
  for(var i=0;i<books.length;i++){
   if(books[i]=="c++"){
   cjj=books[i];
   //如果学校是真
	   if(school){
			for(var j=0;j<school.length;j++){
			//是不是在k学校上学
			 if(school[j].school=="k"){
			 //返回真
			  return true;
			 }
			}
			break;
	   }
   }
  }
  }
  }})




  ---分页
    db.rui.find({},{_id:0,name:1}).limit(5)
  db.rui.find({},{_id:0,name:1}).limit(5).skip(5)
  db.rui.find({},{_id:0,name:1,age:2}).limit(5).skip(5).sort({age:1})
    db.rui.find({},{_id:0,name:1,age:2}).limit(5).skip(5).sort({name:-1})


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。