http://topmanopensource.iteye.com/blog/1278812### 连接写法:[IP地址:端口号]
mongo 192.168.1.161:27017;
show dbs;
db;--显示正在使用的数据库
use asdfwerwe_test;
db.tab_data_result.find();
db.tab_data_period.find();
### 导入,导入数据格式很严谨
mongoimport -h 192.168.1.161:27017 -d asdfswe_test -c tab_data_result d:\data.txt
db.things.remove({"x":"12"});
条件
db.collection.find({"field":{$gt:value}});
db.collection.find({"field":{$lt:value}});
db.collection.find({"field":{$gte:value}});
db.collection.find({"field":{$lte:value}});
范围段
db.collection.find({"field":{$gt:value1,$lt:value2}});
$all匹配所有:
db.users.find({age:{$all:[6,7,8]}});
$exists判断字段是否存在
db.users.find({age:{$exists:true}});
不存在
db.users.find({age:{$exists:false}});
null的处理
db.things.find({y:null});
查询包含null的对象
db.things.find({age:{"$in":[null],"$exists":true}});
基本操作
db.AddUser(username,password) //添加用户
db.auth(usrename,password) //设置数据库连接验证
//例子
mongo 192.168.0.178
use admin
db.auth("mongosa" ,"abc123d");//授权登录
use basdfsd_test;
db.cloneDataBase(fromhost) //从目标服务器克隆一个数据库
db.commandHelp(name) //returns the help for the command
db.copyDatabase(fromdb,todb,fromhost) //复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址
db.createCollection(‘name‘,{size:3333,capped:333,max:88888}) //创建一个数据集,相当于一个表
db.currentOp() //取消当前库的当前操作
db.dropDataBase() //删除当前数据库
db.eval(func,args) //run code server-side
db.getCollection(cname) //取得一个数据集合,同用法:db[‘cname‘] or
db.getCollenctionNames() //取得所有数据集合的名称列表
db.getLastError() //返回最后一个错误的提示消息
db.getLastErrorObj() //返回最后一个错误的对象
db.getMongo() //取得当前服务器的连接对象get the server
db.getMondo().setSlaveOk() //allow this connection to read from then nonmaster membr of a replica pair
db.getName() //返回当操作数据库的名称
db.getPrevError() //返回上一个错误对象
db.getProfilingLevel()
db.getReplicationInfo() //获得重复的数据
db.getSisterDB(name) //get the db at the same server as this onew
db.killOp() //停止(杀死)在当前库的当前操作
db.printCollectionStats() //返回当前库的数据集状态
db.printReplicationInfo()
db.printSlaveReplicationInfo()
db.printShardingStatus() //返回当前数据库是否为共享数据库
db.removeUser(username) //删除用户
db.repairDatabase() //修复当前数据库
db.resetError()
db.runCommand(cmdObj) //run a database command. if cmdObj is a string, turns it into {cmdObj:1}
db.setProfilingLevel(level) //0=off,1=slow,2=all
db.shutdownServer() //关闭当前服务程序
db.version() //返回当前程序的版本信息
数据集(表)操作
db.name.drop();//删除一个集合
db.test.find({id:10}) //返回test数据集ID=10的数据集
db.test.find({id:10}).count() //返回test数据集ID=10的数据总数
db.test.find({id:10}).limit(2) //返回test数据集ID=10的数据集从第二条开始的数据集
db.test.find({id:10}).skip(8) //返回test数据集ID=10的数据集从0到第八条的数据集
db.test.find({id:10}).limit(2).skip(8) //返回test数据集ID=1=的数据集从第二条到第八条的数据
db.test.find({id:10}).sort() //返回test数据集ID=10的排序数据集
db.test.findOne([query]) //返回符合条件的一条数据
db.test.getDB() //返回此数据集所属的数据库名称
db.test.getIndexes() //返回些数据集的索引信息
db.test.group({key:...,initial:...,reduce:...[,cond:...]})
db.test.mapReduce(mayFunction,reduceFunction,<optional params>)
db.test.remove(query) //在数据集中删除一条数据
db.test.renameCollection(newName) //重命名些数据集名称
db.test.save(obj) //往数据集中插入一条数据
db.test.stats() //返回此数据集的状态
db.test.storageSize() //返回此数据集的存储大小
db.test.totalIndexSize() //返回此数据集的索引文件大小
db.test.totalSize() //返回些数据集的总大小
db.test.update(query,object[,upsert_bool]) //在此数据集中更新一条数据
db.test.validate() //验证此数据集
db.test.getShardVersion() //返回数据集共享版本号
MongoDB语法与现有关系型数据库SQL语法比较
db.test.find({‘name‘:‘foobar‘})
// SELECT * FROM test WHERE name=‘foobar‘
db.test.find()
// SELECT * FROM test
db.test.find({‘data_id‘:10}).count()
// SELECT COUNT(*) FROM test WHERE data_id=10
db.test.find().skip(10).limit(20)
// SELECT * FROM test LIMIT 10,20
db.test.find({‘data_id‘:{$in:[25,35,45]}})
// SELECT * FROM test WHERE data_id IN (25,35,45)
db.test.find().sort({‘data_id‘:-1})
// SELECT * FROM test ORDER BY data_id DESC
db.test.find().sort({‘data_id‘:1})
// SELECT * FROM test ORDER BY data_id ASC
db.test.distinct(‘name‘,{‘data_id‘:{$lt:20}})
// SELECT DISTINCT(name) FROM test WHERE data_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 test GROUP BY name
db.test.find(‘this.data_id<20‘,{name:1})
// SELECT name FROM test WHERE data_id<20
db.test.insert({‘name‘:‘foobar‘,‘age‘:25})
// INSERT INTO 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}})
// SELETE 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‘
Mongodb使用总结
1.启动mongodb的服务使用:
mongod --help
启动mongodb的本地服务(data目录和bin同级别)
mongod --dbpath ../data
从参数文件中启动
mongod -f /etc/mongodb.cnf
后台启动方式:
mongod --dbpath=../data --logpath=../logs --fork
2.登录mongodb数据库
mongo --help
登录本地数据库
mongo
登录远程数据库:
mongo 123.123.101.41:27017/mash5
3.恢复本地dump文件
查看帮助:
mongorestore --help
导入本地的dump文件
mongorestore C:\mongodb\bin\dump_bak_11241739\mash5
导入多个数据库
mongorestore --directoryperdb C:\mongodb\bin\dump_bak_11241739
4.备份数据库
查看帮助
mongodump --help
在mongodump命令目录里生成一个dump目录存储导出文件(导出多个数据库)
mongodump
导出数据库到某一个目录(单个数据库)
mongodump --db mash5 -o C:\temp
远程导出
mongodump -h localhost --port 27017 -o c:\temp
5.查看mongodb的数据库性能
查看帮助
mongostat --help
查看所有性能相关的情况
mongostat
6.查看mongo相关的系统信息
查看mongos的帮助
mongos --help
查看mongo的版本
mongos --version
修改一些mongo数据库的相关的参数信息可以采用mongos
7.mongo数据库中gridfs相关的文件信息
8.mongoexport导出
导出test数据库中things表的数据信息
mongoexport -d test -c things -o things.dat
参数说明
-d 指明使用的库, 本例中为” my_mongodb”
-c 指明要导出的表, 本例中为”user”
-o 指明要导出的文件名, 本例中为”user.dat”
从上面可以看到导出的方式使用的是 JSON的样式
导出test数据库中things表中x,y字段以csv格式导出
mongoexport -d test -c things -f x,y --csv -o things.data
输出test数据库中things表中x,y字段以json数组格式显示
mongoexport -d test -c things -f x,y --jsonArray
9.mongoimport 导入
导入JSON格式的test数据库things表中
mongoimport -d test -c things --type json --drop --file things.data
导入cvs数据库
./mongoimport -d my_mongodb -c user --type csv --headerline --file
user_csv.dat
参数说明
-type 指明要导入的文件格式
-headerline 批明不导入第一行,因为第一行是列名
-file 指明要导入的文件路径
mongo常用一些命令:
寻求帮助
help
查看所有的数据库
show dbs
查看一个数据库所有的表
show collection
查看用户
show users
show profile;
查看主机的名称
hostname();
查看当前目录
pwd();
查看数据库相关的帮助:
db.help();
查看mongo数据库当前数据库服务器状态
db.serverStatus();
查看当前数据库名称:
db.getName();
查看当前版本
db.version();
查看数据库表的情况
db.getCollectionNames();
查看数据库是否存在一个表
db.getCollection("Feed");
是否为主数据库
db.isMaster();
数据库的情况
db.stats();
关闭数据库
use admin
db.shutdownServer();
获取当前连接的对象
db.getMongo()
删除Mongo数据库
db.dropDatabase();
创建一个Mongo表对象
db.createCollection("TBS");
删除数据的表对象
db.mash5.drop();
显示当前数据库的操作
db.currentOp();
查看所有的数据库命令:
db.listCommands();
查看数据库相关命令:
db.help();
常用Mongodb SQL语句:
分页查询
db.Feed.find().skip(300).limit(10000);
单个条件查询
db.Task.find({ "tag" : "个人" }).limit(50);
多个条件查询
db.Task.find({ "tag" : "个人", "_id" : ObjectId("4e169d85cc4370e29bc6c72e") }).limit(50).explain();
根据结构型查询
db.Task.find({ "bo.Fields.Label" : "私信" }).limit(50).explain();
db.Task.find({"status":"1"}).count();
db.Task.findOne({"status":"1"});
JS特性:
for(var i=0;i<20;i++){
db.Task.save({x:i*4,y:i*i});
}
var cursor=db.Task.find();
while(cursor.hasNext()){
printjson(cursor.next());
}
db.Task.find().forEach(printjson);
var cursor=db.things.find();
printjson(cursor[4]);
var arr=db.things.find().toArray();
arr[5];
printjson(db.things.findOne({name:"mongodb"}));
db.things.update({name:"mongodb"},{$set:{name:"mongo_db"}})