一、查詢sql
【基本形式】db.col.find().pretty():pretty() 方法以格式化的方式來顯示全部文檔。
mongodb
【獲取記錄條數】:db.users.find().count();
數據庫
【讀取指定數量的數據 limit(number)】:db.COLLECTION_NAME.find().limit(NUMBER)
【排序 1-asc;-1-desc】:db.COLLECTION_NAME.find().sort({KEY:1})
db.col.find({},{"title":1,_id:0}).sort({"likes":-1})
【count(*) 聚合框架】:MongoDB中聚合(aggregate)主要用於處理數據(諸如統計平均值,求和等),並返回計算後的數據結果。
eg:經過字段by_user字段對數據進行分組,並計算by_user字段相同值的總和
select by_user as _id, count(*) as num_tutorial from mycol group by by_user
(1)分組求和:db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
結果以下:
{ "result" : [ { "_id" : "runoob.com", "num_tutorial" : 2 }, { "_id" : "Neo4j", "num_tutorial" : 1 } ], "ok" : 1 }
(2)分組求平均框架
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])【根據 by_user 字段分組,每組計算 likes 的平均值】url
(3)計算每組的極值:spa
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
code
【跳過指定數量的數據】:db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER) 對象
>db.col.find({},{"title":1,_id:0}).limit(1).skip(1)【總共讀取1條,但跳過1條,因此讀的是第 2 條數據】
(4)聚合管道
db.articles.aggregate( [ { $match : { score : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } } ] );
$match用於獲取分數大於70小於或等於90記錄,而後將符合條件的記錄送到下一階段$group管道操做符進行處理。
blog
db.article.aggregate( { $project : { _id : 0 ,【不包含這個默認的字段】 title : 1 , author : 1 }});
這樣的話結果中就只還有tilte和author 兩個字段了,默認狀況下_id字段是被包含的,若是要想不包含_id話能夠:_id:0排序
【條件查詢】
(3)多條件查詢 And
db.col.find({key1:value1, key2:value2}).pretty()
db.col.find({"by":"菜鳥教程", "title":"MongoDB 教程"}).pretty()
以上實例中相似於 WHERE 語句:WHERE by='菜鳥教程' AND title='MongoDB 教程'
(4)Or 查詢
db.tableName.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
>db.col.find({$or:[{"by":"菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty() { "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
(5)AND 和 OR 聯合使用
相似常規 SQL 語句爲: 'where likes>50 AND (by = '菜鳥教程' OR title = 'MongoDB 教程')'
>db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
{ "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
(6) 根據 mongo 中屬性的類型查詢數據
若是想獲取 "col" 集合中 title 爲 String 的數據
db.col.find({"title" : {$type : 2}})
Double:1;String:2;Object:3;Array:4;Binary data:5;Undefined:6;Object id:7;Boolean:8;Date:9;Null:10;Regular Expression:11;JavaScript:13;Symbol:14;JavaScript(with scope):15; 32-bit integer:16;Timestamp:17;64-bit integer:18;Min kye:255(query with -1);Max key:127;
二、insert()方法
>db.col.insert({ title: 'MongoDB 教程', description: 'MongoDB 是一個 Nosql 數據庫', by: '菜鳥教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
三、update() 方法
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )
參數說明:
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 輸出信息
所有更新:db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
四、清空集合
db.col.remove({})
五、索引