码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB的一些基本操作

时间:2015-09-19 19:43:23      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

首先安装mongodb

1.下载地址:http://www.mongodb.org/downloads

2.解压缩到自己想要安装的目录,比如F:\mongodb

3.创建文件夹F:\mongodb\db、F:\mongodb\log,分别用来安装db和日志文件,在log文件夹下创建一个日志文件mongodb.log,即d:\mongodb\log\mongodb.log

4.运行cmd进入dos命令界面,执行下列命令

  > cd F:\mongodb\bin

  > F:\mongodb\bin>mongod -dbpath "F:\mongodb\db" 
默认MongoDB监听的端口是27017

5.新开一个cmd窗口,进入mongodb的bin目录,输入mongo或者mongo.exe,如果测试通过,那么我们就已经进入了test这个数据库。输入exit或者ctrl+C可退出。

 6.当mongod.exe被关闭时,mongo.exe 就无法连接到数据库了,因此每次想使用mongodb数据库都要开启mongod.exe程序,所以比较麻烦,此时我们可以将MongoDB安装为windows服务

 还是运行cmd,进入bin文件夹,执行下列命令:

 > F:\mongodb\bin>mongod --dbpath "F:\mongodb\db" --logpath "F:\mongodb\log\MongoDB.log" --install --serviceName "MongoDB"

 这里MongoDB.log就是开始建立的日志文件,--serviceName "MongoDB" 服务名为MongoDB

 接着启动mongodb服务

 > d:\mongodb\bin>NET START MongoDB 

打开任务管理器,可以看到进程已经启动

7.关闭服务和删除进程

 > F:\mongodb\bin>NET stop MongoDB   (关闭服务)

 > F:\mongodb\bin>mongod --dbpath "F:\mongodb\db" --logpath "F:\mongodb\log\MongoDB.log" --remove --serviceName "MongoDB"      (删除,注意不是--install了)

8.如果不想每次运行时切换目录,可以将MongoDB的安装路径添加到path中,如案例中的:F:\mongodb\bin
 

--创建库
use navy
 
--显示库
show db; show dbs
 
--创建集合
db.createCollection("mycollection",{"autoIndexID":true});  --可通过db.help()查询具体的使用方式
 
--显示集合
show collections
 
--删除集合
db.collection_name.drop();
 
--添加数据
db.mycollection.insert([{"name":"yc","addr":"湖南益阳"},{"name":"navy","addr":"湖南衡阳"}])
db.mycollection.insert({"_id":1,"company":"yc","url":"www.hyycinfo.com","pageViews":1})
db.mycollection.insert({"_id":2,"company":"ycs","url":"www.hyycinfos.com","pageViews":1})
 
--save()方法 如果集合中存在,则替换,否则添加
db.mycollection.save({"_id":1,"company":"ycInfo","url":"www.hyycinfo.com","pageViews":1})  --替换
db.mycollection.save({"_id":3,"company":"yc","url":"www.hyycinfo.com","pageViews":1})  --添加
 
--修改
update() 方法的基本语法如下:
db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)
 
--$inc修改器 将pageViews的值增加1
db.mycollection.update({"_id":1},{"$inc":{"pageViews":1}})
 
--$set
db.mycollection.update({"_id":2},{"$set":{"pageViews":100,"company":"navy"}})
--将公司改成一个数组
db.mycollection.update({"_id":2},{"$set":{"company":["navy","yc","hg"]}})
 
--删除company健
db.mycollection.update({"_id":2},{"$unset":{"company":1}})
 
--数组修改器
--$push添加元素
db.mycollection.update({"_id":2},{"$push":{"company":"sc"}})
 
--$each添加多个
db.mycollection.update({"_id":2},{"$push":{"company":{"$each":["rc","zr"]}}})
 
--$slice 要来保证数组的长度  
db.mycollection.update({"_id":2},{"$push":{"company":{"$each":["rc","zr","navy","yc","hg"],"$slice":-10}}})  --只保留最后的10个数,$slice的值必须为负
 
--$ne/$addToSet主要给数组类型键值添加一个元素时,避免在数组中产生重复数据,$ne在有些情况是不通行的。
db.mycollection.update({"_id":2},{$addToSet:{"company":"yc"}})  --不成功
db.mycollection.update({"_id":2},{$addToSet:{"company":"yc1"}})  --成功
 
--$pop从数组中删除元素{$pop:{"<key>":1}}从数组末尾删除一个元素。{$pop:{"<key>":-1}}从头部删除一个元素
db.mycollection.update({"_id":2},{$pop:{"company":1}})
 
--$pull从数组中删除所有匹配的元素
db.mycollection.update({"_id":2},{$pull:{"company":"zr"}})
 
--$基于位置的数组修改器
若是数组有多个值,而我们只想对其中的一部分进行修改,可以通过位置或者定位操作符"$"
数组下表是从0开始的,可以将下标直接作为键来选择元素。例如:
db.blog.insert({
"_id":1001,
"content":"源辰信息科技有限公司",
"comments":[{
"comment":"很好的公司",
"author":"大军",
"votes":100
},{
"comment":"学习的乐园",
"author":"小军",
"votes":1001
},
{
"comment":"快乐地成长之地",
"author":"小小军",
"votes":100
}]
})
如果想要增加第一个评论的投票数,可以这么做;
db.blog.update({"_id":1001},{$inc:{"comments.0.votes":1}})
 
但很多情况下,不预先查询文档就不能知道要修改的数组的小标。为了克服这个困难,MongoDB提供了定位操作符$,用来定位查询文档已经匹配的数组元素,并进行更新。
db.blog.update({"comments.author":"小军"},{$set:{"comments.$.author":"小军哥"}});
 
MongoDB默认将只更新单一的文件,更新多个你需要设置参数置‘multi‘ 为true
db.blog.update({‘title‘:‘MongoDB Overview‘},{$set:{‘title‘:‘New MongoDB Tutorial‘}},{multi:true})
db.blog.update({‘title‘:‘MongoDB Overview‘},{$set:{‘title‘:‘New MongoDB Tutorial‘}},false,true);
 
--条件查询
db.mycollection.find()
db.mycollection.findOne().pretty();  --pretty()格式化输出
db.mycollection.find({"<key>":"<val>"}) --where <key> = <val>
db.mycollection.find({"<key>":{$lt:<val>}}) --where <key> < <val>
db.mycollection.find({"<key>":{$lte:<val>}}) --where <key> <= <val>
db.mycollection.find({"<key>":{$gt:<val>}}) --where <key> > <val>
db.mycollection.find({"<key>":{$gte:<val>}}) --where <key> >= <val>
db.mycollection.find({"<key>":{$ne:<val>}}) --where <key> != <val>
 
--in
db.mycollection.find({"<key>":{$in:[<val>]}})
 
--and
db.mycollection.find({"name":"navy","addr":"湖南衡阳"}).pretty() --where <key> != <val>
 
--or
db.mycollection.find({$or:[{"name":"navy"},{"addr":"湖南衡阳"}]}).pretty() 
 
--and and or
db.mycollection.find({"name":"yc",$or:[{"name":"navy"},{"addr":"湖南衡阳"}]}).pretty() 
 
游标操作
for(i=0;i<100;i++){
db.collection.insert({x:i});
}
 
var cursor=db.collection.find();
var obj;
while(cursor.hasNext()){
obj=cursor.next();
display(obj);
}
游标还实现了JavaScript的迭代接口,所以可以在forEach循环中使用
cursor.forEach(function(x){
print(x)
});
 
db.collection.find().limit(3) --返回前三个
db.collection.find().skip(3); --略过前三个
sort接受一个对象作为参数,这个对象是一组键/值对,键对应文档的键名,值为排序规则。1为升序,-1为降序。
db.collection.sort({username:1,age:-1});   
 
分页每页10条
第一页:db.collection.find({"desc":"mp3"}).limit(10).sort({"price":-1});
下一页:db.collection.find({"desc":"mp3"}).skip(10).limit(10).sort({"price":-1});
 
索引:
db.collection.ensureIndex({"age":1,"username":1}) --在age和username上建立符合索引

MongoDB的一些基本操作

标签:

原文地址:http://www.cnblogs.com/xiaocunchu/p/4822033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!