ubuntu下mongodb操作部分整理
在ubuntu終端下輸入mongo,可以看到自己電腦上安裝的mongodb的版本。
$mongo 192.168.x.x即可進入資料庫(不需要使用者名稱和密碼就能訪問的資料庫)
$ssh [email protected]回車就會提示輸入密碼,輸入密碼就能進入資料庫。(需要使用者名稱、密碼登陸的資料庫)(name 為使用者名稱)
show dbs 顯示mongodb伺服器下的各個資料庫列表名稱
use name (name 為資料庫名稱)
在進入相應的資料庫後,輸入 show collections 即可看到該資料庫下的各個資料夾(我最開始的mongodb版本為2.4.9,輸入這個命令不顯示資料庫下的檔名稱,升級到3.x後就可以了)
show collections
db.filename.find()
其中,filename為上一操作後返回的檔名稱,輸入此命令後可以檢視檔案資訊。
eq:
> db.test.find()
{ "_id" : ObjectId("57be736ccf28b40888c632be"), "123123" : "哈哈哈" }
>db.test.count() 可以獲取collection下的檔案總數
help檢視命令提示:
help
db.help()
檢視當前使用的資料庫:db.getName()
顯示當前db狀態:db.stats()
當前db版本:db.version()
檢視當前db的連結機器地址:db.getMongo()
建立一個聚集集合(table):db.createCollection(“collName”, {size: 20, capped: 5, max: 100}) //建立成功會顯示{“ok”:1}
//判斷集合是否為定容量db.collName.isCapped()
得到指定名稱的聚集集合(table):db.getCollection("account")
顯示當前db所有聚集索引的狀態:db.printCollectionStats()
查詢之前的錯誤資訊(即在本次與資料庫的互動操作中錯誤的無效操作):db.getPrevError()
清除錯誤記錄:db.resetError()
上面這些操作是我在使用的過程中用到的一些操作,親測可行,其實還有很多操作,如對使用者的管理、根據欄位進行查詢、修改等,但是我暫時不需要就沒有嘗試。上面這些操作對於瞭解你所要使用的資料庫是很有幫助的,通過這些操作你可以清楚資料庫下有什麼檔案,檔案的欄位資訊等,只有瞭解了這些資訊你才能進行下一步的資料存取。
但是原文內容較多,故根據個人需要刪除了部分操作,同時又添加了部分自己在使用過程中用到的其他操作。
利用pymongo進行mongodb資料庫的部分操作:(可互動操作)
>>>from pymongo import MongoClient
>>>import gridfs
>>>client=MongoClient('192.168.x.x')
>>>db=client['dbname'] #dbname為此伺服器下的某一資料庫名稱
>>>fs=gridfs.GridFS(db)
>>>collection=db.test #test為此資料庫下的某一資料集名稱,此操作獲取該資料集
>>>collection.find_one() #這句程式碼獲取資料集中的第一個物件資料
{u'_id': ObjectId('57be736ccf28b40888c632be'), u'123123': u'\u54c8\u54c8\u54c8'} #此為輸出結果。
>>>collection.count() #輸出該資料集下的物件總數
2341 #輸出結果
Querying for More Than One Document
To get more than a single document as the result of a query we use thefind()method.find() returns aCursor instance, which allows us to iterateover all matching documents. For example, we can iterate over everydocument in theposts collection:<span style="font-size:14px;">>>> for post in posts.find({"author": "Mike"}):
... post
...
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
{u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'bulk', u'insert']}</span>
Just like we did withfind_one(),we
can pass a document tofind()to
limit the returned results. Here, we get only those documents whoseauthor is “Mike”:<span style="font-size:14px;">>>> for post in posts.find({"author": "Mike"}):
... post
...
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
{u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'bulk', u'insert']}</span>
補充:(部分基礎知識,覺得很有必要了解)
一、文件的注意事項:
1. 鍵值對是有序的,如:{ "name" : "stephen", "genda" : "male" } 不等於 { "genda" : "male", "name" : "stephen" }
2. 文件資訊是大小寫敏感的,如:{ "name" : "stephen" } 不等於 { "Name" : "stephen" }
3. 文件資訊是區分型別的,如:{ "age" : 30 } 不等於 { "age" : "30" }
4. 文件中不能出現重複鍵,如:{ "name" : "stephen", "name" : "liu" }
二、使用多個集合的必要性:
1. 如果把各種模式的文件存放在一個集合中,對於開發者來說是非常災難的。因為在獲取到查詢結果之後,就需要手工編寫程式碼過濾不同型別的文件了。
2. 會使查詢效率降低。試想一下,假設某個模式的文件的資料量相對較少,如果仍然將其放到一個通用的大集合中,其查詢效率勢必會大大低於將其放到獨立的集合中。
3. 在建立索引時,如果所有的文件均為同一模式,那麼索引的利用率將會更加高效。
三、集合的命名注意事項:
1. 集合名不能是空字串""。
2. 不要以system開頭,這一般是為系統保留的,如system.users集合中儲存了資料庫的使用者資訊,而system.namespace集合中保留了資料庫集合的資訊。
3. 不要在集合名裡面包含'$'字元。
4. 子集合只是一種較好的集合規劃方式,如blog.posts和blog.anthurs,實際上它們和blog集合之間沒有任何關係,甚至blog集合可以不存在。
四、資料庫:
在同一個MongoDB伺服器中可以存在多個數據庫,每個不同的資料庫儲存在不同的檔案中。又由於資料庫名和檔名是繫結的,因此資料庫名會有一些限制。
1. 不能是空字元""。
2. 全部小寫且不超過64位元組。
3. 不得含有檔名命名中的非法字元。
4. admin資料庫是管理資料庫,如果某個使用者位於該資料庫中,他將自動繼承所有資料庫許可權。一些特定的伺服器命令也只能從這個資料庫執行。
5. local這個資料庫永遠不會被複制,只是用於儲存限於本地單臺伺服器的任意集合。
6. 資料庫名.集合名,表示該集合的完全限定名,其長度不要超過121自己。
整理的比較雜亂,但基本上都是比較常用的操作,根據個人需要整理了會用到的操作,僅供參考,如果需要更詳細的操作的話,而且英語閱讀能力尚可的情況下,建議直接看官網,不建議看別人寫的部落格,官網是寫的最詳細最準確的~