mongodb学习总结

MongoDB是一个寄语分布式文件存储的额数据库,是由C++语言来进行编写的,旨在为web应用提供可扩展的高性能数据存储方案

mongodb是一个高性能的 开元 无模式 的文档型数据库,是当前nosql中比较火的一种

传统的关系型数据库一般有数据库(datebase),表(table),记录(record)三个层次的概念组成的,mongodb是由数据库(database),集合(collection)文档对象(document)三个层次组成的。mongodb对于关系型数据库里面的表,但是没有行和列的概念

它的特点是:高性能 易部署 存储数据非常的方便
1)面向集合存储,易存储对象类型的数据
2) 模式是自由的,支持动态查询
3)支持完全索引,包含内部对象 支持查询
4) 支持复制和故障恢复
5)使用高效的二进制数据存储,包括大型对象(如视频等)
6)自动处理碎片,以支持云计算层次的扩展性
7)文件存储的格式为BSON(json格式的扩展)

下面说一下这个mongodb的安装和使用的基本操作:

注意:在下面说的一些命令都是对大小写敏感的

而且一定要注意,如果表中的数据都带引号的话(不管是单引还是双引),我们在删除,查询,修改的时候,都要按照表的格式中的数据来进行

 

mongodb中没有 库 表 行 列的概念

mongodb中 集合 对应的是 一张 表  文档对应的是 一行 数据 (是由键值对组成的)


怎样建立mongodb的服务?(在win7环境下)

1.首先下载mongodb的压缩文件,然后解压到一个文件夹,假设是在D:/mongodb文件夹下,然后将加压后的文件中的bin目录下的所有exe文件放到D:/mongodb

 

2.启动cmd的窗口:进入到该目录下,然后使用mongod.exe --dbpath d:/mogodb/data

  上述的data文件夹必须是自己手动创建好的,数据文件放在这里

3.然后使用netstat -an 查看是否有27017 这个端口号,有的话则说明创建成功

 

每次起动这个mongodb,我们都要敲这个指令,挺麻烦的,所以我们建立一个.bat 文件,这里面写上要处理的文件,然后每次双击执行这个文件即可连接。


 

4.连接上以后,我们然后双击mongo.exe文件,即可使用这个客户端。

 

 

 

 

 

 


下面是使用这个客户端的一些基本操作命令:


客户端的一些基本的指令:

Db:代表的是当前的数据库

Show dbs 显示出当前的数据库名称

Show collections 显示出当前数据库中的表。


 

添加记录  --insert

1. 向用户表(user)中添加一条记录

var user “username”:”Tom”, “age”:10 }; ----》对象  (json)

db.user.insert(user);              --------》 向user(集合)中插入记录

 

2. 或者直接插入一条数据:

    Db.user.insert({‘name’:’zhangsan’,’age’:10});

     ---insert into user (name,age) values(‘zhangsan’,’10’);

 

3. 向用户集合中插入一条日志记录

var blog {“title”:”title1”,”content”:”content1”,”addtime”:”2012”}

db.user.insert(blog);

 

4. 但是这样插入两条数据的话,只会插入第一条数据

    Db.users.insert({‘name’:’kate’},{‘name’:’lily’})

也就是说不能一下子插入两条数据进去,只能分开来进行添加

 

注意:要用过程,通过还是一个集合中只保存数据类型相同的数据



查询记录 -> find()   ->findOne()

db.user.findOne()  à 查询出第一条记录 ------> select from users limit 1

db.user.find()   à 查询出所有的记录------->select from users 

 

条件查询:

查询出年龄等于10岁所有记录

db.user.find( “age”:10  --------->select from users where age=10

查询出年龄等于10岁并且姓名是“tom”所有记录

db.user.find( “age”:10,”username”:”Tom” ---->select from users where usersname=’tom’ and age=10

 

Mongodb中的限制查询,排序,记录数(可用于分页的功能)

 

限制查询的功能:(对应的sql语句)

1.db.users.find().limit(10)---------->select from users limit 0,10;

 Db.users.find().skip(3).limit(10)---------->select from users limit 3,10;

 

Skip() 函数表示的是跳过几条记录

 

 


2.查找总的记录数:

 Db.users.find().count() -------->select count(*) from users

 

Db.users.find({‘name’:’zhangsan’}).count()------->selec count(*) from users where name=’zhangsan’

 


3.对相应的记录进行排序:

Db.users.find().sort({‘age’:-1})------>select from users order by age desc 

Db.users.find().sort({‘age’:1})-------->select from users order by age asc

注意:表示的是升序,-1表示的是降序

 


4.还有一个查询功能:

 Db.users.find(‘this.age>13’) ------->select from users where age>13

 Db.users.find(‘this.age>13’,{’name’:1})----->select name from users where age>13

 上面的这种查询方式,不能用于查询 相等 的情况


5.查询带有范围的数据:

 Db.users.find({‘age’:{$in:[‘13’,’23’,’33’]}})----->select from users where age in 13,23,33

 上面的$in 还是可以变换的,例如:$lt $gt $gte $lte $eq $ne等一些范围的修饰符



 

修改记录  update(where,data)   save()

修改Tom年龄为20?

var db.user.findOne( {“username”:”Tom”})

u.age 20

db.user.save(u);

上面的这种做法也是错误的

 

 

错误:

db.user.update( {“username”:”Tom”}   {“age”:20}    à  注意,错误!

正确:

var db.user.findOne( {“username”:”Tom”})

u.age 20

db.user.update({“username”:”Tom”}  )---------->也是错误的

还可以这样的更改数据:

Db.users.update({‘name’:’zhangsan’},{‘$set’:{‘age’:’15’}})

 

 



删除记录     remove()

删除所有的记录:

db.user.remove(); ------delete from user

删除age=30的记录

db.user.remove({“age”:30}) --->delete from user where age=30

 

删除年龄小于20岁的记录

Db.users.remove({‘age’:{$lt:’20’}}) ----->delete from users where age<20

上面的$lt也是可以变换的,例如:$gt $eq $ne $gte $lte

 

再删除的时候,如果添加的时候,数据是有引号的,则在删除的时候,也是必须加上引号的

 


寻求帮助

系统级帮助: help

数据库级:  db.help()

集合级: db.user.help()

函数级:db.user.insert

 

 

 

 


Phpmongodb的整合步骤:

 

1.打开自己的phpinfo()函数,看看自己的php的编译的版本:


 

2.在网上找php_mongo.dll文件,此文件的类型要和上面的编译的版本是一样的,因此我们找的就是 TS VC6 dll文件,然后下载。


3.将下载好的这个dll文件放到php/ext 目录下,然后再php.ini文件中加上这么一句话:

  Extension php_mongo.dll 然后重启apache即可。


4.在phpinfo()中查看是否有 mongo节,如果有的话,则配置成功,反之失败。(原因:主要是查看一下自己的dll文件的版本是否和编译php的版本是否一致的,这个比较重要)


 

 

 

 

 

 

 

 

 

 

 

 

 

 

怎样在php文件中使用mongo这个服务呢?

一个简单的例子:



和在客户端使用的方法是一样的,先new一个对象出来,然后是引用数据库,再然后是表。

注意:表中的数据是要以数组的形式传递的。


 

上面的这个例子是mongo的一个比较简单的使用例子。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值