MongoDB 基础

1. 入门指南

1.1 简介

  • NoSQL,全称是”Not Only Sql”, 指的是非关系型的数据库
  • MongoDB 是一个面向集合的,模式自由的文档型数据库
  • MongoDB是基于 JSON 来描述数据的,所有的“数据行”都可以通过一个JSON格式的文档(document)来表示

1.2 特点

  1. 面向集合(Collenction-Orented)
  2. 模式自由(schema-free)
  3. 文档型

1.3 文档型

  • 数据是键-值对的集合,键是字符串,值可以是数据类型集合里的任意类型,包括数组和文档。
  • ⽂件存储格式为 BSON 数据格式(⼀种JSON的扩展),即 “Binary Serialized Document Notation.”

2. 实战

2.1 数据库操作

#  use 代表创建并使⽤
> use 库名

#查看当前所在库
> db

# 删除当前选中的库
> db.dropDatabase()

2.2 创建用户

创建管理员用户

> use admin
> db.createUser(
     {
       user:"root",
       pwd:"111111",
       roles:[{role:"root",db:"admin"}]
     }
  )

创建数据库用户 (用户只能访问该数据库)

> use mydb
> db.createUser(
    {
      user: "Tinyspot",
      pwd: "123456",
      roles: ["readWrite"]
    }
 ) 

查看用户信息 show users

2.3 集合操作

# 创建集合
> db.createCollection('collectionName', [options])

# 删除集合
> db.collectionName.drop();

示例:

> db.createCollection('user')
> db.user.drop()

2.4 文档操作

db.collectionName.insert({"name":"Tinyspot","age":20});
MongoDB 中每个⽂档都会有⼀个 _id 作为唯⼀标识, _id 默认会⾃动⽣成;也可⼿动指定
MongoDB 会区分类型和大小写
MongoDB 中的文档不能包含重复的键

示例:
单条⽂档

> db.user.insert({"name":"Tinyspot","age":20});

多条文档

> db.user.insert([
 {"name":"Tinyspot","age":20},
 {"name":"Bob","age":12}
]);

3. ⽂档查询

语法 db.collectionName.find(query, projection)
示例:

# 查询所有
> db.user.find()

# pretty() ⽅法以格式化的⽅式来显示所有⽂档
> db.user.find().pretty()

3.2 条件操作符

单条件

# field > value
> db.user.find({"field":{$gt:value}}); 

多条件

# value1  db.user.find({ "field" : { $gt: value1, $lt: value2 } } );

3.3 其他

$in 包含 db.user.find({"age":{$in: [2,4,6]}});
$all 匹配所有 db.user.find({"age": {$all : [6, 8]}});

3.4 sort 排序

> db.users.find().sort({age: 1}); 
> db.users.find().sort({age: -1});

3.5 count 查询

> db.user.find().count();

4. 索引

4.1 索引操作

语法:db.collectionName.createIndex(keys, options)
示例:

> db.user.createIndex({'name':1})

说明: name 为索引字段,1 表示按升序创建索引 (-1 表示降序)

# 查看索引
> db.collectionName.getIndexes()

# 删除指定索引
> db.collectionName.dropIndex("key")

4.2 复合索引

> db.collectionName.createIndex({"name":1,"age":-1})

注意: mongoDB 中复合索引和传统关系型数据库⼀致都是左前缀原则

【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容