mongodb macos 下的安裝和使用
一、安裝
https://www.mongodb.com/download-center?jmp=nav#community
官網下載自己需要的版本的安裝包,當然也可以使用系統自帶的包管理工具進行安裝,這裡就不多介紹了
下載完成後,將檔案解壓到自己想要的目錄,我是放在了/usr/local/ 目錄下,將mongodb的bin目錄配置到環境變數中,以便訪問。根目錄下面建立data/db 目錄,用於存放mongodb資料,並且給該目錄設定許可權,否則訪問會報錯
sudo mkdir -p /data/db
sudo chown -R 當前登入的使用者名稱 /data
參考:http://cacaorick.logdown.com/posts/1207679
二、啟動服務
開啟終端,執行
➜ ~ mongod
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] MongoDB starting : pid=15495 port=27017 dbpath=/data/db 64-bit host=lizandeMBP
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] db version v3.6.5
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] git version: a20ecd3e3a174162052ff99913bc2ca9a839d618
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2o 27 Mar 2018
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] allocator: system
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] modules: none
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] build environment:
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] distarch: x86_64
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] target_arch: x86_64
2018-06-12T17:46:12.934+0800 I CONTROL [initandlisten] options: {}
2018-06-12T17:46:12.937+0800 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=3584M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),cache_cursors=false,log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress)...
也可以使用--dbpath自定義資料庫的路徑,
mongod --dbpath 自定義路徑/db
開啟另一個終端,執行mongo執行MongoDB
➜ ~ mongo
MongoDB shell version v3.6.5
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.5
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten]
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten]
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2018-06-12T17:46:14.724+0800 I CONTROL [initandlisten]
如果想停止程式可執行ctrl+c
三、mongodb的基本概念
每個框架都有自己的語法或者API或者單獨的概念性的東西,使用之前要大概瞭解其核心概念,在mongodb中基本的概念是文件、集合、資料庫
資料庫
一個mongodb中可以建立多個資料庫,每一個都有自己的集合和許可權,不同的資料庫也放置在不同的檔案中
1、show dbs 可以顯示當前所有的資料庫列表
db 可以檢視當前資料庫物件或集合
use 資料庫名稱 連線到指定資料庫
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> db
test
> use test
switched to db test
>
有一些資料庫名是保留的,可以直接訪問這些有特殊作用的資料庫。
admin: 從許可權的角度來看,這是"root"資料庫。要是將一個使用者新增到這個資料庫,這個使用者自動繼承所有資料庫的許可權。一些特定的伺服器端命令也只能從這個資料庫執行,比如列出所有的資料庫或者關閉伺服器。
local: 這個資料永遠不會被複制,可以用來儲存限於本地單臺伺服器的任意集合
config: 當Mongo用於分片設定時,config資料庫在內部使用,用於儲存分片的相關資訊。
文件
mongodb是以文件形式儲存資料的,文件是一組鍵值對,如下:
{"site":"www.runoob.com", "name":"菜鳥教程"}
需要注意的是:
1. 文件中的鍵/值對是有序的。
2. 文件中的值不僅可以是在雙引號裡面的字串,還可以是其他幾種資料型別(甚至可以是整個嵌入的文件)。
3. MongoDB區分型別和大小寫。
4. MongoDB的文件不能有重複的鍵。
5. 文件的鍵是字串。除了少數例外情況,鍵可以使用任意UTF-8字元。
文件鍵命名規範:
- 鍵不能含有\0 (空字元)。這個字元用來表示鍵的結尾。
- .和$有特別的意義,只有在特定環境下才能使用。
- 以下劃線"_"開頭的鍵是保留的(不是嚴格要求的)。
集合
集合對應的是sql中的資料庫表概念,集合沒有固定的結構,可以儲存不同型別的資料
四、資料庫連線
- 本地資料庫連線
mongo
- 遠端連線為
mongo 遠端主機IP或dns:mongo資料庫埠號/資料庫名 -u 使用者名稱 -p
password
如下:
連線指定埠號的資料庫
mongo 192.168.1.100:27017
連線到指定資料庫
mongo 192.168.1.100:27017/test
連線到指定使用者名稱和密碼的資料庫
mongo 192.168.1.100:27017/test -u user -p password
➜ ~ mongo 192.168.1.100
MongoDB shell version v3.6.5
connecting to: mongodb://192.168.1.100:27017/test
MongoDB server version: 3.6.5
Server has startup warnings:
2018-05-31T09:13:43.315+0000 I CONTROL [initandlisten]
2018-05-31T09:13:43.315+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-05-31T09:13:43.315+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2018-05-31T09:13:43.315+0000 I CONTROL [initandlisten]
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten]
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten]
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten]
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-05-31T09:13:43.316+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2018-05-31T09:13:43.317+0000 I CONTROL [initandlisten]
> show dbs
admin 0.000GB
test 0.000GB
config 0.000GB
local 0.000GB
> use test
switched to db boss
五、資料庫的操作
建立資料庫
MongoDB 建立資料庫的語法格式如下:
use DATABASE_NAME
如果資料庫不存在,則建立資料庫,否則切換到指定資料庫。
向資料庫中插入一條資料
> db.test.insert({"name":"lz","age":15,"size":"160"})
WriteResult({ "nInserted" : 1 })
刪除資料庫
首先切換到要執行操作的資料庫
> use test
switched to db test
> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
刪除集合
db.collection.drop()
示例
> show tables
test
> use test
switched to db test
> show tables
test
> db.test.drop()
true
> show tables
>
建立集合
MongoDB 中使用 createCollection() 方法來建立集合。
db.createCollection(name,options)
引數說明:
- name:要建立的集合名稱
-
options: 可選,用來指定記憶體大小和索引資訊的選項
示例:
> use test
switched to db test
> db.createCollection("user")
{ "ok" : 1 }
> show tables
user
> show collections
user
> db.createCollection("bank",{capped:true,size:6142800,max:1000})
{ "ok" : 1 }
> show collections
bank
user
>
也可以不建立,當你插入文件時,如果指定的集合不存在,MongoDB 會自動建立集合。
> db.bank_info.insert({"name":"工商銀行","code":10021})
WriteResult({ "nInserted" : 1 })
> show collections
bank
bank_info
user
>
刪除集合
db.collection.drop()
示例:
> db.bank_info.drop()
true
> show collections
bank
user
>
插入文件
MongoDB 使用 insert() 或 save() 方法向集合中插入文件,語法如下:
db. COLLECTION_NAME.insert(document)
> db.lesson.insert({title: 'MongoDB 教程',
... description: 'MongoDB 是一個 Nosql 資料庫',
... by: '簡書',
... url: 'http://www.jianshu.com',
... tags: ['mongodb', 'database', 'NoSQL'],
... })
WriteResult({ "nInserted" : 1 })
> db.lesson.find()
{ "_id" : ObjectId("5b20e16776322c7daa3fb2e4"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "簡書", "url" : "http://www.jianshu.com", "tags" : [ "mongodb", "database", "NoSQL" ] }
>
插入資料到未建立的集合,會預設建立並插入資料,並自動生成_id 主鍵
刪除文件
MongoDB remove()函式是用來移除集合中的資料。在執行remove()函式前先執行find()命令來判斷執行的條件是否正確是一個比較好的習慣。
db.COLLECTION_NAME.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
引數說明:
- query :(可選)刪除的文件的條件。
- justOne : (可選)如果設為 true 或 1,則只刪除一個文件。
- writeConcern :(可選)丟擲異常的級別。
> db.lesson.find()
{ "_id" : ObjectId("5b20e16776322c7daa3fb2e4"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "簡書", "url" : "http://www.jianshu.com", "tags" : [ "mongodb", "database", "NoSQL" ] }
{ "_id" : ObjectId("5b20e69f76322c7daa3fb2e5"), "title" : "sql 教程", "description" : "mysql 是一個 sql 資料庫", "by" : "簡書", "url" : "http://www.jianshu.com", "tags" : [ "mysql", "database", "SQL" ] }
> db.lesson.remove({"title":"sql 教程"})
WriteResult({ "nRemoved" : 1 })
> db.lesson.find()
{ "_id" : ObjectId("5b20e16776322c7daa3fb2e4"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "簡書", "url" : "http://www.jianshu.com", "tags" : [ "mongodb", "database", "NoSQL" ] }
>
如果想要刪除全部文件
db.COLLECTION_NAME.remove({})
更新文件
update() 方法用於更新已存在的文件。語法格式如下:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
引數說明:
- query : update的查詢條件,類似sql update查詢內where後面的。
- update : update的物件和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set後面的
- upsert : 可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
- multi : 可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新。
- writeConcern :可選,丟擲異常的級別。
> db.lesson.update({"title":"MongoDB 教程"},{$set:{"title":"MongoDB"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.lesson.find()
{ "_id" : ObjectId("5b20e16776322c7daa3fb2e4"), "title" : "MongoDB", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "簡書", "url" : "http://www.jianshu.com", "tags" : [ "mongodb", "database", "NoSQL" ] }
>
檢視文件
MongoDB 查詢文件使用 find() 方法。
> db.COLLECTION_NAME.find()
> db.lesson.find()
{ "_id" : ObjectId("5b20e16776322c7daa3fb2e4"), "title" : "MongoDB", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "簡書", "url" : "http://www.jianshu.com", "tags" : [ "mongodb", "database", "NoSQL" ] }
>
如果想要以易讀的方式來讀取資料,可以使用pretty()的方法
> db.lesson.find().pretty()
{
"_id" : ObjectId("5b20e16776322c7daa3fb2e4"),
"title" : "MongoDB",
"description" : "MongoDB 是一個 Nosql 資料庫",
"by" : "簡書",
"url" : "http://www.jianshu.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
]
}
自此 mongodb 安裝到基本的資料庫操作完成。
相關文章
- Win7下MongoDB的安裝和使用Win7MongoDB
- 如何在macos下使用brew安裝labelImgMac
- Windows下安裝MongoDBWindowsMongoDB
- Mac下安裝MongodbMacMongoDB
- MacOS安裝使用KettleMac
- mongodb的安裝以及使用MongoDB
- mongodb的安裝配置,使用MongoDB
- Mongodb的下載與安裝MongoDB
- CentOs下Mongodb的下載與安裝CentOSMongoDB
- windows下安裝MongoDB擴充套件和配置WindowsMongoDB套件
- Linux下Mongodb安裝和啟動配置LinuxMongoDB
- 如何使用m工具安裝和管理MongoDBMongoDB
- MacOS 10.15.7下Anaconda和Pycharm的安裝配置MacPyCharm
- MongoDB下載與安裝MongoDB
- Linux 下安裝 MongodbLinuxMongoDB
- 【mongodb】mongodb的安裝MongoDB
- windows下Redis的安裝和使用WindowsRedis
- ubuntu下ndk的安裝和使用Ubuntu
- centos下的AVAST安裝和使用CentOSAST
- CentOS6.5下安裝mongodbCentOSMongoDB
- Flutter 學習 02 - macOS 下 flutter 的安裝FlutterMac
- 下載 macOS 系統安裝程式的方法Mac
- windows 下 MongoDB 的安裝與啟動WindowsMongoDB
- windows下mongodb的安裝及啟動WindowsMongoDB
- mongo(mongodb)在linux下的安裝MongoDBLinux
- docker安裝mongoDB及使用DockerMongoDB
- mongodb的安裝和啟動方法MongoDB
- MongoDB入門簡介|MongoDB下載安裝|MongoDB語法MongoDB
- MongoDB的安裝MongoDB
- Spring 的下載、安裝和使用Spring
- macos 下 vmware fusion 安裝 vmware tools教程Mac
- macOS下MySQL 8.0 安裝與配置教程MacMySql
- Mongodb在Windows下安裝及配置MongoDBWindows
- CentOS 6.3下快速安裝MongoDB 3.2.1CentOSMongoDB
- MacOS Flutter環境配置和安裝MacFlutter
- macOS docker/laradock 安裝與使用MacDocker
- linux下Anaconda的安裝和使用Linux
- python下redis安裝和使用PythonRedis