Mongo經常使用語法

引用地址:http://www.jb51.net/article/28694.htmmysql

數據庫操做語法 
mongo --path 
db.AddUser(username,password) 添加用戶 
db.auth(usrename,password) 設置數據庫鏈接驗證 
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.cname 
db.getCollenctionNames() 取得全部數據集合的名稱列表 
db.getLastError() 返回最後一個錯誤的提示消息 
db.getLastErrorObj() 返回最後一個錯誤的對象 
db.getMongo() 取得當前服務器的鏈接對象get the server connection object 
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.linlin.find({id:10}) 返回linlin數據集ID=10的數據集 
db.linlin.find({id:10}).count() 返回linlin數據集ID=10的數據總數 
db.linlin.find({id:10}).limit(2) 返回linlin數據集ID=10的數據集從第二條開始的數據集 
db.linlin.find({id:10}).skip(8) 返回linlin數據集ID=10的數據集從0到第八條的數據集 
db.linlin.find({id:10}).limit(2).skip(8) 返回linlin數據集ID=1=的數據集從第二條到第八條的數據 
db.linlin.find({id:10}).sort() 返回linlin數據集ID=10的排序數據集 
db.linlin.findOne([query]) 返回符合條件的一條數據 
db.linlin.getDB() 返回此數據集所屬的數據庫名稱 
db.linlin.getIndexes() 返回些數據集的索引信息 
db.linlin.group({key:...,initial:...,reduce:...[,cond:...]}) 
db.linlin.mapReduce(mayFunction,reduceFunction,<optional params>) 
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'}) select * from linlin where name='foobar' 
db.linlin.find() select * from linlin 
db.linlin.find({'ID':10}).count() select count(*) from linlin where ID=10 
db.linlin.find().skip(10).limit(20) 從查詢結果的第十條開始讀20條數據 select * from linlin limit 10,20 ----------mysql 
db.linlin.find({'ID':{$in:[25,35,45]}}) select * from linlin where ID in (25,35,45) 
db.linlin.find().sort({'ID':-1}) select * from linlin order by ID desc 
db.linlin.distinct('name',{'ID':{$lt:20}}) select distinct(name) from linlin where ID<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}) select name from linlin where ID<20 

db.linlin.insert({'name':'foobar','age':25}) insert into linlin ('name','age') values('foobar',25) 
db.linlin.insert({'name':'foobar','age':25,'email':'cclove2@163.com'}) 

db.linlin.remove({}) delete * from linlin 
db.linlin.remove({'age':20}) delete linlin where age=20 
db.linlin.remove({'age':{$lt:20}}) delete linlin where age<20 
db.linlin.remove({'age':{$lte:20}}) delete linlin where age<=20 
db.linlin.remove({'age':{$gt:20}}) delete linlin where age>20 
db.linlin.remove({'age':{$gte:20}}) delete linlin where age>=20 
db.linlin.remove({'age':{$ne:20}}) delete linlin where age!=20 

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

官方提供的操做語句對照表: 

上行: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 BY name 
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 AND age<=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,ts DESC) 
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'});sql

 

Spring mongoTemplate的常見用法:數據庫

//插入數據
mongoTemplate.insert(Object objectToSave,String collection);數組

mongoTemplate.save(Object objectToSave,String collection);服務器

修改:update+each+sort+sliceapp

$sort將數組中的元素按照必定的規則進行排序,1表示正序,-1表示倒序。ide

$sort必須與$push、$each結合使用,而且$each值的數組中的元素都必須爲對象this

//建立修改條件 
JSONArray each = new JSONArray();
each.add(insertObject);//$each 循環數據
JSONObject sort = new JSONObject();
sort.put("_id", -1);

建立Update對象, 將total_comment的數量+1,:.net

Update update = new Update();
update.push("commentlist", new BasicDBObject("$each", each).append("$sort", sort).append("$slice", COMMENTLISTSIZE));
update.inc("total_comment", 1);

建立Criteria,Query,查詢條件是_id=msgidcode

Criteria criteria = Criteria.where("_id").is(msgid);
Query query = new BasicQuery(criteria.getCriteriaObject());
fcmongoTemplate.updateFirst(query, update, C_FC_MSG);

整個語句連起來是:修改id爲msgid的記錄,將each裏的對象添加進commentlist,並對commentlist進行倒序排序,只留最新的五條。

//查詢:

相關文章
相關標籤/搜索