MongoDB命令以及使用

启动mongo命令:

格式:mongod  --dbpath  ”路径“  --logpath "文件路径名" -logappend(以追加日志方式) --fork(以后台方式开启)

实例: mongod --dbpath data --logpath log/mongod.log-logappend --fork

 

启动mongo shell

命令mongo 默认使用test数据库

 

命令:use mydb

作用:转换使用mydb,如果不存在则自动创建

 

命令:show dbs

作用:显示当前存在的数据库

 

命令:show collections

作用:显示当前操作数据库中存在的数据集合


命令:db.user.save({name:"wuwuwu",age:20})

           db.demo.insert({name:"巫政霖",age:21,sex:"男"})

           db.demo.insert({name:"wzl",sex:NumberInt(20)})

作用:在user collection 中插入一条记录,如果名字为user的collection不存在,则自动创建

注意:在mongo shell当中,不指明数字类型,都以64位double类型存储

数据格式:json

数据类型表如下

 

 

 

命令:db.user.find()  或 db.user.find(json)

作用:查找全部记录 / 查找对应的记录

 

命令:db.user.save({_id: ObjectId("55ab3655017ff6cc1d870342}, name: "leo")

    操作结果等于

命令:db.user.update({_id:ObjectId("55ab3655017ff6cc1d870342")},{name:"txmwzl"})

作用:用于更新记录,但是操作结果相当于相当于删除后增加,只保留更新的field

那如何只更新某一个field(域)呢?

命令:db.user.update({_id:ObjectId("55ab3655017ff6cc1d870342} , {$set:{name : "wuzhenglin"}})

作用:只更新一个域的值

命令:db.user.remove({age:2})

作用:删除集合中age为2的记录

 

命令:db.user.drop()

作用:删除名字为user的集合

 

命令:db.dropDatabase()

作用:删除当前操作的数据库

 

命令:db.demo.find({sex:null})

作用:查找sex为空或没有这个字段的文档(一个文档相当于一条记录的概念)

 

命令:db.demo.find({name:{$type:1}})

作用:查找name字段存放值:为double类型的文档

 

==============================================================

                                                                                             脚本执行

js脚本如下:

//连接数据库

dbService = connect("localhost:27017");

//选择操作集合

db = dbService.getSiblingDB("demo")

//创建bulk对象用于批量插入

db.demo2.drop();

var bulk = db.demo2.initializeUnorderedBulkOp();

//测试数据

var doc1 = {

name:"巫政霖",

scores:

   [

{course:"c++",score:93},

{course:"java",score:96}

   ]

   }

bulk.insert(doc1);

var doc2 = {

                name:"谭欣明",

                scores:

                   [

                        {course:"c++",score:97},

                        {course:"java",score:92}

                   ]

           }    

bulk.insert(doc2);

//执行插入批量插入操作

bulk.execute()

print("脚本执行完毕")

 

==============================================================

                                                                                             查询语法

db.demo.find( {where}, {需要输出的字段:设置成1,只能要么0,要么1,不能0,1混合,除了主键设0,其余设1可以}, limit (int),  skip (int))

例如: db.demo.find({ },{ _id:0 , name:1} ,2,3) 正确,  db.demo.find({ },{ scores:0 , name:1} ,2,3)错误 

 

还可以单独时用limit(), skip(), sort({name:1} )函数

sort(name:1)按照name升序排序 , 0逆序

例如: db.demo.find({ },{ _id:0 , name:0} ,2,3).sort(name:1)

 

 

db.demo.find({$or:[{age:{$lt:20}},{name:{$eq:"巫政霖"}}]})

db.demo.find({$nor:[{age:{$lt:20}},{name:{$eq:"巫政霖"}}]})

db.demo.find({$and:[{age:21},{sex:"男"}]})

db.demo.find({sex:{$nin:["女","男"]}})

db.demo.find({age:{$eq:21}})

 

 

内嵌文档和数组查询(难点)

数组查询

  1. 匹配整个数组

  2. 匹配数组中的某个元素(包含两种情况)

    1. 与位置无关

    2. 与位置有关

       

       

 

内嵌文档数组查询例子:

数据如下:

> db.demo2.find()

 

{ "_id" : ObjectId("55ab9ef41fde978a4f55f059"), "name" : "巫政霖", "scores" : [ { "course" : "c++", "score" : 93 }, { "course" : "java", "score" : 96 } ] }

 

{ "_id" : ObjectId("55ab9ef41fde978a4f55f05a"), "name" : "谭欣明", "scores" : [ { "course" : "c++", "score" : 97 }, { "course" : "java", "score" : 92 } ] }

 

 

db.demo2.find({'scores.score':93})

db.demo2.find({"scores.1":{ "course" : "java", "score" : 96 } })  

 

 

 

模糊查询

 

 

 

 

findAndModify()   :查询修改函数

例子1:

db.demo2.findAndModify({query:{name:{$regex:/^谭/,$options:'im'}},update:{$set:{name:'巫巫巫'}},fields:{_id:0},new:true})

返回结果:

{

 

"name" : "巫巫巫",

 

"scores" : [

 

{

 

"course" : "c++",

 

"score" : 97

 

},

 

{

 

"course" : "java",

 

"score" : 92

 

}

 

]

 

}

 

例子2:

db.demo2.findAndModify({query:{name:{$regex:/^巫/,$options:'im'}},update:{name:'巫巫巫'},fields:{_id:0},new:true})

返回结果:

{ "name" : "巫巫巫" }

 

 

 

=====================================================

                                                                        update操作

 

 

 

例子:

db.demo2.update({name:"谭欣明"},{$inc:{"scores.1.score":1}})

db.demo2.update({name:{$regex:/明/}},{$currentDate:{birthday:true}})

 

 


你可能感兴趣的:(MongoDB)