MongoDB 初始语法记录

310 阅读2分钟

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})