mngoDB 常用语法
阅读原文时间:2023年07月10日阅读:2

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,)
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"}})