MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
它的特点是高性能、易部署、易使用,存储数据非常方便。
1. MongoDB的获取和安装
(1)获取地址 http://www.mongodb.org/downloads
(2)解压 mongodb-win32-i386-1.8.1
(3)创建数据存放文件夹,mongodb默认的数据目录 /data/db
(4)运行 MongoDB
启动服务
启动客户端
2. 熟悉MongoDB的数据操作语句,类sql
数据库操作语法
mongo --path
db.AddUser(username,password)
db.auth(usrename,password)
db.cloneDataBase(fromhost)
db.commandHelp(name)
db.copyDatabase(fromdb,todb,fromhost)
db.createCollection(name,{size:3333,capped:333,max:88888})
db.currentOp()
db.dropDataBase()
db.eval_r(func,args)
db.getCollection(cname)
db.getCollenctionNames()
db.getLastError()
db.getLastErrorObj()
db.getMongo()
db.getMondo().setSlaveOk()
db.getName()
db.getPrevError()
db.getProfilingLevel()
db.getReplicationInfo()
db.getSisterDB(name)
db.killOp()
db.printCollectionStats()
db.printReplicationInfo()
db.printSlaveReplicationInf
db.printShardingStatus()
db.removeUser(username)
db.repairDatabase()
db.resetError()
db.runCommand(cmdObj)
db.setProfilingLevel(level)
db.shutdownServer()
db.version()
数据集(表)操作语法
db.linlin.find({id:10})
db.linlin.find({id:10}).count()
db.linlin.find({id:10}).limit(2)返回linlin数据集ID=10的数据集从第二条开始的数据集
db.linlin.find({id:10}).skip(8)
db.linlin.find({id:10}).limit(2).skip(8)
db.linlin.find({id:10}).sort()
db.linlin.findOne([query])
db.linlin.getDB()
db.linlin.getIndexes()
db.linlin.group({key:...,initial:...,reduce:...[,cond:...]})
db.linlin.mapReduce(mayFunction,reduceFunction,)
db.linlin.remove(query)
db.linlin.renameCollection(newName)
db.linlin.save(obj)
db.linlin.stats()
db.linlin.storageSize()
db.linlin.totalIndexSize()
db.linlin.totalSize()
db.linlin.update(query,object[,upsert_bool]) 在此数据集中更新一条数据
db.linlin.validate()
db.linlin.getShardVersion()
db.linlin.find({'name':'foobar'})
db.linlin.find()
db.linlin.find({'ID':10}).count()
db.linlin.find().skip(10).limit(20)
db.linlin.find({'ID':{$in:[25,35,45]}})
db.linlin.find().sort({'ID':-1})
db.linlin.distinct('name',{'ID':{$lt:20}})
db.linlin.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}})
select name,sum(marks) from linlin group by name
db.linlin.find('this.ID<20',{name:1})
db.linlin.insert({'name':'foobar','age':25})
db.linlin.insert({'name':'foobar','age':25,'email':'cclove2@163.com'})
db.linlin.remove({})
db.linlin.remove({'age':20})
db.linlin.remove({'age':{$lt:20}})
db.linlin.remove({'age':{$lte:20}})
db.linlin.remove({'age':{$gt:20}})
db.linlin.remove({'age':{$gte:20}})
db.linlin.remove({'age':{$ne:20}})
db.linlin.update({'name':'foobar'},{$set:{'age':36}})
db.linlin.update({'name':'foobar'},{$inc:{'age':3}})
官方提供的操作语句对照表:
上行:SQL 操作语句
下行:Mongo 操作语句
CREATE TABLE USERS (a Number, b Number)
db.createCollection("mycoll")
INSERT INTO USERS VALUES(1,1)
db.users.insert({a:1,b:1})
SELECT a,b FROM users
db.users.find({}, {a:1,b:1})
SELECT * FROM users
db.users.find()
SELECT * FROM users WHERE age=33
db.users.find({age:33})
SELECT a,b FROM users WHERE age=33
db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users WHERE age=33 ORDER BYname
db.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33
db.users.find({'age':{$gt:33}})})
SELECT * FROM users WHERE age<33
db.users.find({'age':{$lt:33}})})
SELECT * FROM users WHERE name LIKE "%Joe%"
db.users.find({name:/Joe/})
SELECT * FROM users WHERE name LIKE "Joe%"
db.users.find({name:/^Joe/})
SELECT * FROM users WHERE age>33 ANDage<=40
db.users.find({'age':{$gt:33,$lte:40}})})
SELECT * FROM users ORDER BY name DESC
db.users.find().sort({name:-1})
SELECT * FROM users WHERE a=1 and b='q'
db.users.find({a:1,b:'q'})
SELECT * FROM users LIMIT 10 SKIP 20
db.users.find().limit(10).skip(20)
SELECT * FROM users WHERE a=1 or b=2
db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )
SELECT * FROM users LIMIT 1
db.users.findOne()
SELECT DISTINCT last_name FROM users
db.users.distinct('last_name')
SELECT COUNT(*y) FROM users
db.users.count()
SELECT COUNT(*y) FROM users where AGE >30
db.users.find({age: {'$gt': 30}}).count()
SELECT COUNT(AGE) from users
db.users.find({age: {'$exists': true}}).count()
CREATE INDEX myindexname ON users(name)
db.users.ensureIndex({name:1})
CREATE INDEX myindexname ON users(name,tsDESC)
db.users.ensureIndex({name:1,ts:-1})
EXPLAIN SELECT * FROM users WHERE z=3
db.users.find({z:3}).explain()
UPDATE users SET a=1 WHERE b='q'
db.users.update({b:'q'}, {$set:{a:1}}, false, true)
UPDATE users SET a=a+2 WHERE b='q'
db.users.update({b:'q'}, {$inc:{a:2}}, false, true)
DELETE FROM users WHERE z="abc"
db.users.remove({z:'abc'});