Mongodb shell語法筆記

#幫助
> db.help()
DB methods:
        db.addUser(username, password[, readOnly=false])
        db.auth(username, password)
        db.cloneDatabase(fromhost)
... ...

#查看所有數據庫  
> show dbs
local   (empty)
... ...

#新建/打開數據庫
> use sybn
switched to db sybn

#向集合users插入數據
> db.users.save({username:"sybn", sex:"male"})
> db.users.save({username:"eva", sex:"femail"})
> db.users.save({username:"adam", sex:"mail"})

#查詢集合
> show collections
system.indexes
users

#查看各collection的狀態 
> db.printCollectionStats()
system.indexes
{
        "ns" : "sybn.system.indexes",
        "count" : 1,
        "size" : 68,
        "avgObjSize" : 68,
        "storageSize" : 4096,
        "numExtents" : 1,
        "nindexes" : 0,
        "lastExtentSize" : 4096,
        "paddingFactor" : 1,
        "flags" : 0,
        "totalIndexSize" : 0,
        "indexSizes" : {

        },
        "ok" : 1
}
---
users
{
        "ns" : "sybn.users",
        "count" : 3,
        "size" : 172,
        "avgObjSize" : 57.333333333333336,
        "storageSize" : 4096,
        "numExtents" : 1,
        "nindexes" : 1,
        "lastExtentSize" : 4096,
        "paddingFactor" : 1,
        "flags" : 1,
        "totalIndexSize" : 8176,
        "indexSizes" : {
                "_id_" : 8176
        },
        "ok" : 1
}
---

#顯示當前db狀態
>  db.stats();
{
        "db" : "sybn",
        "collections" : 3,
        "objects" : 7,
        "avgObjSize" : 48,
        "dataSize" : 336,
        "storageSize" : 12288,
        "numExtents" : 3,
        "indexes" : 1,
        "indexSize" : 8176,
        "fileSize" : 16777216,
        "nsSizeMB" : 16,
        "ok" : 1
}

#查看當前db的鏈接機器地址
> db.getMongo();
connection to 127.0.0.1

查看聚集集合基本信息
1、查看幫助  db.yourColl.help();
2、查詢當前集合的數據條數  db.yourColl.count();
3、查看數據空間大小 db.userInfo.dataSize();
4、得到當前聚集集合所在的db db.userInfo.getDB();
5、得到當前聚集的狀態 db.userInfo.stats();
6、得到聚集集合總大小 db.userInfo.totalSize();
7、聚集集合儲存空間大小 db.userInfo.storageSize();
8、Shard版本信息  db.userInfo.getShardVersion()
9、聚集集合重命名 db.userInfo.renameCollection("users"); 將userInfo重命名爲users
10、刪除當前聚集集合 db.userInfo.drop();


#查詢集合users的數據 默認每頁顯示20條,當顯示不下的情況下,可以用it迭代命令查詢下一頁數據。注意:it命令不能帶分號
> db.users.find()
{ "_id" : ObjectId("530adc46fa6bc5c4672ba23f"), "username" : "sybn", "sex" : "male" }
{ "_id" : ObjectId("530adc46fa6bc5c4672ba240"), "username" : "eva", "sex" : "femail" }
{ "_id" : ObjectId("530adc47fa6bc5c4672ba241"), "username" : "adam", "sex" : "mail" }

#查詢分頁(sort:排序,limit:結果集長度限制,skip:結果集起始位置)
> db.users.find().sort({username: 1}).limit(1).skip(2)
{ "_id" : ObjectId("530adc46fa6bc5c4672ba23f"), "username" : "sybn", "sex" : "male" }

#查詢指定列的數據(1爲顯示,0爲屏蔽,id默認顯示,其他默認屏蔽)
> db.users.find({}, {_id: 0, username:1});
{ "username" : "sybn" }
{ "username" : "eva" }
{ "username" : "adam" }

# "$gt" 、"$gte"、 "$lt"、 "$lte" 大於小於,不解釋
# "$and"、"$nor"、"$not"、"$or" 與或非,不解釋
# "$all" 完整匹配數組
# "$size" 查詢指定長度的素組
# "null" 是否爲空或不存在
# "$exists" 是否存在
# "$in"、"$nin" 數組包含指定元素
# "$mod" 取模(求餘數) find({ amount: {$mod:[4,0]} }) 即除4餘0

#正則查詢
> db.users.find({username:/a/});
> db.users.find({username:{$regex:'a',$options:'i'}});
{ "_id" : ObjectId("530adc46fa6bc5c4672ba240"), "username" : "eva", "sex" : "femail" }
{ "_id" : ObjectId("530adc47fa6bc5c4672ba241"), "username" : "adam", "sex" : "mail" }

# $options (使用$regex )
i   如果設置了這個修飾符,模式中的字母會進行大小寫不敏感匹配。
m   默認情況下,PCRE 認爲目標字符串是由單行字符組成的(然而實際上它可能會包含多行).如果目標字符串 中沒有 "\n"字符,或者模式中沒有出現“行首”/“行末”字符,設置這個修飾符不產生任何影響。
s    如果設置了這個修飾符,模式中的點號元字符匹配所有字符,包含換行符。如果沒有這個修飾符,點號不匹配換行符。
x    如果設置了這個修飾符,模式中的沒有經過轉義的或不在字符類中的空白數據字符總會被忽略,並且位於一個未轉義的字符類外部的#字符和下一個換行符之間的字符也被忽略。 這個修飾符使被編譯模式中可以包含註釋。 注意:這僅用於數據字符。 空白字符 還是不能在模式的特殊字符序列中出現,比如序列 。
  注:JavaScript只提供了i和m選項,x和s選項必須使用$regex操作符

# "$where"
操作符功能強大而且靈活,他可以使用任意的JavaScript作爲查詢的一部分,包含JavaScript表達式的字符串或者JavaScript函數。

  新建fruit集合並插入如下文檔:

//插入兩條數據
db.fruit.insert({"apple":1, "banana": 4, "peach" : 4})
db.fruit.insert({"apple":3, "banana": 3, "peach" : 4})
  比較文檔中的兩個鍵的值是否相等.例如查找出banana等於peach鍵值的文檔(4種方法):

//JavaScrip字符串形式
db.fruit.find( { $where: "this.banana == this.peach" } )
db.fruit.find( { $where: "obj.banana == obj.peach" } )

//JavaScript函數形式
db.fruit.find( { $where: function() { return (this.banana == this.peach) } } )
db.fruit.find( { $where: function() { return obj.banana == obj.peach; } } )

# "$slice" 數組分頁
# "$elemMatch" 投影操作符將限制查詢返回的數組字段的內容只包含匹配elemMatch條件的數組元素。


參考: http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html



參考: http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章