MongoDB应用学习

创建数据库可以直接使用use test

但是这个时候show dbs是看不到的,只有加入了数据才算真正创建了。

 

collection对应mysql中表的概念

collection中每条数据在生成的时候会自行生成_id的字段

 

db.pet.find()

相当于select * from pet

> db.pet.find() 
{ "_id" : ObjectId("513d489ff596e5c47cf26c28"), "Id" : "1", "Name" : "cat1", "skill" : "2" }

db.pet.find(<json>)

代表select * from pet where XXX

> db.pet.find({_id : ObjectId("513d489ff596e5c47cf26c28")}) 
{ "_id" : ObjectId("513d489ff596e5c47cf26c28"), "Id" : "1", "Name" : "cat1", "skill" : "2" }

db.pet.findOne({'Id': '2'})

只查找一个

 

增删改查分别对应

save

remove

update

find/findOne

 

db.currentOp来获取当前操作线程的相关信息

创建索引有两种方法:

db.system.indexes.insert(XXX)

db.system.ensureIndex(XXXX)

第二种更常用

索引和mysql的索引一样,是按照B+树来排序的,所以需要设置B+树的顺序,排列顺序为从小到大设置为1,排列顺序为从大到小设置为-1

 

mongo的索引分为三种:

唯一索引

松散索引(null行不加入索引)

多值索引(可以对一个array进行索引)

http://blog.nosqlfan.com/html/3656.html

 

索引在后台创建

db.values.ensureIndex({open: 1, close: 1}, {background: true})

 

mongodb中各个结构是有提供各自的api的,具体需要参考:

http://api.mongodb.org/js/2.3.2/index.html

 

查询一个collection中某个字段有哪些值:

> db.pet.distinct("skill") 
[ "1", "2" ]

只显示一些字段:

> db.pet.find({},{'skill':1}) 
{ "_id" : ObjectId("513d4adbf596e5c47cf26c2b"), "skill" : "1" } 
{ "_id" : ObjectId("513d489ff596e5c47cf26c28"), "skill" : "2" }

这里的_id是默认的Id,必须要显示出来的

mysql中limit start,num

> db.pet.find().skip(1).limit(1) 
{ "Id" : "1", "Name" : "cat1", "_id" : ObjectId("513d489ff596e5c47cf26c28"), "pic" : "noooo", "skill" : "2" }

 

MongoDB语法 MySql语法

db.test.find({'name':'foobar'})<==> select * from test where name='foobar'

db.test.find() <==> select *from test

db.test.find({'ID':10}).count()<==> select count(*) from test where ID=10

db.test.find().skip(10).limit(20)<==> select * from test limit 10,20

db.test.find({'ID':{$in:[25,35,45]}})<==> select * from test where ID in (25,35,45)

db.test.find().sort({'ID':-1}) <==> select * from test order by IDdesc

db.test.distinct('name',{'ID':{$lt:20}}) <==> select distinct(name) from testwhere ID<20

db.test.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}}) <==> select name,sum(marks) from testgroup by name

db.test.find('this.ID<20',{name:1}) <==> select name from test whereID<20

db.test.insert({'name':'foobar','age':25})<==>insertinto test ('name','age') values('foobar',25)

db.test.remove({}) <==> delete * from test

db.test.remove({'age':20}) <==> delete test where age=20

db.test.remove({'age':{$lt:20}}) <==> elete test where age<20

db.test.remove({'age':{$lte:20}}) <==> delete test where age<=20

db.test.remove({'age':{$gt:20}}) <==> delete test where age>20

db.test.remove({'age':{$gte:20}})<==> delete test where age>=20

db.test.remove({'age':{$ne:20}}) <==> delete test where age!=20

db.test.update({'name':'foobar'},{$set:{'age':36}})<==> update test set age=36 where name='foobar'

db.test.update({'name':'foobar'},{$inc:{'age':3}})<==> update test set age=age+3 where name='foobar'

from:http://blog.csdn.net/shellching/article/details/7651979

 

php安装mongo需要使用扩展

文档在这里:

http://docs.mongodb.org/ecosystem/drivers/php/

php的mongo扩展的使用文档在这里:

http://blog.mongodb.org/post/24960636131/mongodb-for-the-php-mind-part-1

时间: 2024-11-03 21:02:45

MongoDB应用学习的相关文章

【mongodb系统学习之五】mongodb启动最常用参数

五.mongodb启动时其他常用参数的使用(都是选用):       1).--logappend,指定日志的写入方式为追加,强烈建议使用:       2).--port,指定mongodb的端口号,当不使用这个参数的时候,默认是27017:       3).--fork,使mongodb以后台进程的方式运行,当使用这个参数启动以后,可以在同一个终端中进行其他操作,比如ps.mongo,而不需要重新打开中端:       4).-replSet,使用副本集时的参数:       5).其他参

MongoDB开发学习(1)开天辟地,经典入门

一,简介  MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.  MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.      MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类

【mongodb系统学习之六】mongodb配置文件方式启动

六.mongodb可以用配置文件启动,配置文件配好后,每次指定文件就好,而不用每次写一长串:     1).创建配置文件:         2).配置(例如指定数据存储目录,日志存储文件,后台进程,端口号等):         3).配置文件启动(注意,此时如果配置文件指定了端口号并且不是27017,那么执行部分操作时,必须指定相同的端口号,例如mongo命令):     

【mongodb系统学习之四】查看mongodb进程

四.查看mongodb进程(可以配合启动和关闭使用):      1).方法一:直接查看mongodb进程是否已经存在(用上面的方式启动后,需要另开一个窗口操作):ps –ef|grep mongodb,       如图:                     2).方法二:在bin目录下执行mongo命令看能否成功进入mongodbshell操作界面,如图:      

【mongodb系统学习之二】mongodb的启动

二.mongodb的启动:    1.在mongodb2.6.9的文件夹中建立data目录.logs目录以及   logs目录下的mongodb.log文件,如图:                2.进入到mongodb的bin目录中执行mongod命令,并指定相关的参数,如最简单的dbpath(数据存储目录).logpath(日志存储目录)    ./mongod  --dbpath=/mongodb/mongodb2.6.9/data  --logpath=/mongodb/logs/mon

【mongodb系统学习之七】mongodb的关闭

七.mongodb的关闭:      1).直接根据进程id杀死mongodb进程,如图(注意,kill -9要慎用,这个是强制关闭进程,可能导致文件损坏,尽量不要用,可以直接kill不加参数):                       2).如果不是用-fork方式启动,可以直接在启动界面按ctrl+c结束进程,如图(图1和图3是同一控制台,3是按下ctrl+c之后执行ps):                        3).无论是不是-fork启动,都可以在mongodb shell

【mongodb系统学习之八】mongodb shell常用操作

八.mongodb  shell常用基础操作(每个语句后可以加分号,也可以不加,看情况定(有的工具中可以不加),最好是加):    1).进入shell操作界面:mongo,上边已有演示:     2).查看当前使用的数据库:db,上边已有演示:     3).查看当前所有存在的数据库:showdbs:查看当前数据中所有集合,showcollections如图:                 4).切换数据库:usedbname:需要注意的是,如果已经存在这个数据库,则会切换到该数据库:如果不

【mongodb系统学习之十二】mongodb修改数据(一)

十二.mongodb修改数据:update     1).修改数据库数据:update:语法         db.collectionName.update({},{},boolean,boolean):     2).update共有四个参数,其中后两个是可选项:       第一个参数是要修改的文档的匹配条件,第二个是要替换的新文档:       第三个参数为true时,更改的文档若不存在则会创建一个,为false时则不创建:       第四个参数为true时,会更改第一个条件匹配到的所

【mongodb系统学习之十一】mongodb删除数据

十一.mongodb删除数据:     1).删除全部文档:remove,语法db.collectionName.remove({}):小括号里边必须要有条件,否则不成功:如果只是一个空的{},则会删除集合内所有文档数据:          2).按条件删除文档:remove删除数据的时候,不删除源数据:逻辑删除,不删除集合:使用show dbs可以看到数据库占用的内存与删除前比没变,使用show collections可以看到集合还在:为了有明显区别,先插入1000000数据:      3)