一、打开MongoDB数据库服务:
参照http://my.oschina.net/u/241255/blog/194164 博客来打开MongoDB服务。当然如果你将MongoDB加入到windows service中的话,那就可以直接到window服务中启动和关闭MongoDB服务。我还是比较喜欢在命令行中启动。嘿嘿!
二、连接MongoDB shell
再打开一个命令行工具(不要关闭原来的那个,不然就会将MongoDB服务停止),输入如下命令:
mongo
备注:我将MongoDB的命令都加入到了Path路径,所以可以随处运行MongoDB命令,如果你还未加入,那么请到mongodb的bin目录下运行该命令。
1、mongodb默认连接的是test数据库,连接上以后就可以进行数据库操作了,这里稍后在讲MongoDB的基础操作。
2、当然,如果你想切换到别的数据库时,可以使用下面的操作:
use newDB
连接到newDB数据库上,如果该数据库存在,则直接连接,不存在就会创建一个新的数据库,并连接上。
三、数据库的基本操作
1、insert操作
数据库现在我们已经创建了,那么我们需要创建一个集合,这个相当于关系型数据库中表的概念啦。创建一个user集合,当然我们不需要像关系型数据库那样,先创建表才能向里面insert数据。我们只要做如下操作:
db.user.insert({"username":"test","age":12,"sex":"m"}) db.user.insert({"work":"good"})
这样就创建了一个user集合,并向里面插入了数据。
使用变量来插入数据:
2、find操作(查找数据):
数据库中现在已经有数据了,我们非常想知道里面存了些什么:
db.user.find()
我们看到这里面添加了一个”_id",这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性。
(1)在实际的应用中,我们往往会使用二元查询,比如:
>, >=, <, <=, !=, =
And,OR,In,NotIn
在mongodb中都已将这些二元操作进行基本的封装:
<1>"$gt", "$gte", "$lt", "$lte", "$ne", "没有特殊关键字"
/* find age>18 */ db.user.find({"age":{$gt:18} /* find age<18*/ db.user.find({"age":{$lt:18} /* find age != 18 */ db.user.find({"age":{$ne:18} /* find age == 18 */ db.user.find({"age":18}
<2> "无关键字“, "$or", "$in","$nin"
/* find name==hanmeimei province==guangdong */ db.user.find({"name":"hanmeimei","address.province":"guangdong"}) /* find name==hanmeimei or province == guangdong */ db.user.find({$or:[{"name":"hanmemei"},{"address.province":"guangdong"}]}) /* find province in (guangdong anwei) */ db.user.find({"address.province":{$in:["guangdong","anwei"]}}) /* find province not in (guangdong anwei) */ db.user.find({"address.province":{$nin:["guangdong","anwei"]}})
<3> 在mongodb中还有一个特殊的匹配,那就是“正则表达式”
/* find name startWith h and endwith i*/ db.user.find({"name":/^h/,"name":/i$/})
<4> 有时查询很复杂,很蛋疼,不过没关系,我们可以使用mongodb提供的$where
db.user.find({$where:function(){ return this.name == 'hanmeimei'}})
3、update操作:
db.user.update({"username":"test"},{"age":25,"sex":"w"})
更新username为test的记录。
我们会发现username为test的用户不见了,因为这里是整体更新,所以只将更新的字段保存下来,稍微我们会介绍局部更新。
(2)局部更新:
$inc修改器
$inc也就是increase的缩写,学过sql server 的同学应该很熟悉,比如我们做一个在线用户状态记录,每次修改会在原有的基础上自增$inc指定的值,如果“文档”中没有此key,则会创建key,
db.user.update({"name":"hanmeimei"},{$inc:{"age":25}})
2)$set修改器
db.user.update({"name":"hanmeimei"},{$set:{"age":25}})
3)upsert操作
这个可是mongodb创造出来的“词”,大家还记得update方法的第一次参数是“查询条件”吗?,那么这个upsert操作就是说:如果我
没有查到,我就在数据库里面新增一条,其实这样也有好处,就是避免了我在数据库里面判断是update还是add操作,使用起来很简单
将update的第三个参数设为true即可。
4)批量更新
在mongodb中如果匹配多条,默认的情况下只更新第一条,那么如果我们有需求必须批量更新,那么在mongodb中实现也是很简单
的,在update的第四个参数中设为true即可。
4、remove操作:
db.user.remove()
remove(),不带参数表示删除这个集合的全部记录。要慎用!