1、Mac OSX 安装
- 进入 /usr/local:
cd /usr/local
- 下载:
sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.9.tgz
- 解压:
sudo tar -zxvf mongodb-osx-ssl-x86_64-4.0.9.tgz
- 重命名为 mongodb 目录:
sudo mv mongodb-osx-x86_64-4.0.9/ mongodb
- 配置环境变量
export PATH=/usr/local/mongodb/bin:$PATH
2、运行 MongoDB
- 首先我们创建一个数据库存储目录 /data/db:
sudo mkdir -p /data/db
- 启动 mongodb,默认数据库目录即为 /data/db:
sudo mongod
- 再打开一个终端进入执行以下命令:
$ cd /usr/local/mongodb/bin
$ ./mongo
- 命令记录
show dbs // 显示所有数据的列表
db // 显示当前数据库对象或集合
use xxx // 可以连接到一个指定的数据库xxx
db.createCollection(name, options) // 创建集合 name:集合名称,必填 options:可选参数,指定有关内存大小及索引的选项
db.createCollection("CollectionName", {capped:true, size:100000}) // 创建capped collections集合xxx
show tables // # show collections 展示当前数据库中的创建的集合
db.CollectionName.drop() // 删除集合
- MongoDB shell 来连接 MongoDB 服务器
mongodb://admin:123456@localhost/ // 使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上
- MongoDB 数据库操作
use dsy // 数据库dsy不存在则创建,存在则切换
db.dropDatabase() // 删除数据库(切换到当前的数据库,执行删除)
3、 文档
db.CollectionName.insert(document) // 插入文档
db.CollectionName.find() //查看已插入文档
db.col.save(document) // 插入文档,不指定_id字段,用法同insert;指定的话则更新_id字段
示例:往集合b中插入一段文档

- 更新文档
db.CollectionName.update( <query>, // update的查询条件,类似sql update查询内where后面的 <update>, // update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 { upsert: <boolean>, // 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入 multi: <boolean>, // 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新 writeConcern: <document> // 可选,抛出异常的级别 } ) // 示例: db.CollectionName.insert({ title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
// 更新:
db.CollectionName.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
查看更新后的数据:
db.col.find().pretty()
展示:
{
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
- 删除文档
db.collection.remove(
<query>, //可选)删除的文档的条件
{
justOne: <boolean>, // 可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern: <document> // (可选)抛出异常的级别
}
)
db.col.remove({}) // 删除所有的数据
示例:

4、查询文档
db.collection.find(query, projection)
// query :可选,使用查询操作符指定查询条件
// projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
db.collection.find(query, projection).pretty() // 以格式化的方式来显示所有文档
db.collection.findOne() // 只返回一个文档
示例:

5、条件操作符
MongoDB中条件操作符有:
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
示例:
db.b.save({title:'test第一条数据',age:16,_id:'22'})
db.b.insert({title:'monogodb',age:18})
db.b.save({name:'dsy'})
and:
db.b.find({age:16,_id:'22'})
or:
db.b.find({$or:[{age:16},{age:18}]})
大于:
db.b.find({age:{$gt:16}})
大于等于:
db.b.find({age:{$gte:16}})
小于:
db.b.find({age:{$lt:16}})
小于等于:
db.b.find({age:{$lte:16}})
等于:
db.b.find({age:16})
不等于:
db.b.find({age:{$ne:16}})
示例:
大于15,小于18,and id='22' title='test第一条数据' 或者 title='monogodb'
db.b.find({_id:'22',$or:[{title:'test第一条数据'},{title:'monogodb'}],age:{$gt:15},age:{$lt:18}})
筛选结果:
{ "_id" : "22", "title" : "test第一条数据", "age" : 16 }
//模糊查询
查询 title 包含"教"字的文档:
db.col.find({title:/教/})
查询 title 字段以"教"字开头的文档:
db.col.find({title:/^教/})
查询 titl e字段以"教"字结尾的文档:
db.col.find({title:/教$/})
7、$type 操作符
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果
dn.colName.find({keyname:{$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 key 255 Query with -1.
Max key 127
8、limt
db.COLLECTION_NAME.find().limit(NUMBER): 接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
9、skip
db.COLLECTION_NAME.find().limit(NUMBER): 跳过指定数量的数据,接受一个数字参数作为跳过的记录条数,默认参数为 0
10.排序
db.COLLECTION_NAME.find().sort({KEY:1}) 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列 ,KEY来指定根据什么来排序
11、索引
db.collection.createIndex(keys, options):Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可
使用多个字段创建索引:
db.col.createIndex({"title":1,"description":-1})