2、MongoDB 组成

该栏目讲叙 MongoDB 相关的知识,包括简介、各模块的操作和与 Spring 的整合



数据库

描述命令
创建或切换数据库use 库名
显示当前数据库db
显示所有数据库show dbs

集合

  • 概述一组文档集合,类似于关系型数据库中的表

  • 相关操作

描述命令
创建集合db.createCollection(name,[option])
显示集合show collections
删除集合db.集合.drop()
  • 案例
// 创建集合
	// option 相关参数 
		// capped:如果为 true,则创建固定集合
		// size:为固定集合指定一个最大值,即字节数
		// max:指定固定集合中包含文档的最大数量
db.createCollection("c1")
db.c2
db.c3.insert({"a":1})

// 显示集合
show collections

// 删除集合
db.c1.drop()

文档

1、文档插入

描述命令
插入至少1条文档inert()
插入单条文档insertOne()
插入多条文档insertMany()
插入至少1条文档save()
# 定义用户信息
user1 = {
    "name": "zhangsan",
    "age": 18
}
user2 = {
    "name": "lisi",
    "age": 20
}

# 插入单条数据
db.users.insertOne(user1)
db.users.insert(user1)
db.users.save(user1)

# 插入多条数据
db.users.insertMany([user1,user2])
db.users.insert([user1,user2])
db.users.save([user1,user2])

2、文档更新

  • 方法update(query,update,[upser,multi])
    • query:更新条件
    • update:更新字段,如果不指定的字段都会被删除
    • upser:如果文档不存在是否插入,默认为 false
    • multi:是否批量更新,默认为false
  • 操作符
    • $set:用于更新指定的键
    • $rename:重命名字段名称
    • $inc:增加已有键的值
    • $unset:从文档中移除指定的键
// 定义用户信息
user1 = {
    "name": "zhangsan",
    "age": 20,
    "address": "bj",
    "hobbies": ["a","b"]
}
user2 = {
    "name": "lisi",
    "age": 19,
    "address": "sw",
    "hobbies": ["c","d"]
}
 
updateUser = {
    "name": "lisi",
    "age": 18,
    "hobbies": ["a","b"]
}
 
// 添加数据
db.users.insert([user1,user2])

// 修改单条数据
db.users.update({"name":"wanwu"},updateUser)
// 批量更新数据
db.users.update({"name":"lisi"},{"$set":{"name":"wanwu"}},false,true)
// 更新指定字段的值
db.users.update({"name":"lisi"},{"$set":{"age":18}})
// 删除指定字段的值
db.users.update({"name":"lisi"},{"$unset":{"age":1}})
// 增加整形字段的值
db.users.update({"name":"lisi"},{"$inc":{"age":17}})
// 重命名字段名
db.users.updateOne({"name":"zhangsan"},{"$rename":{"hobby":"hobbies"}})

// 查询所有
db.users.find()

3、文档删除

描述命令
根据条件删除文档remove(query,[options])
根据条件删除一条文档deleteOne(query)
根据条件删除文档deleteMany(query)
// 删除单条文档
db.users.remove({"name":"zhangsan",{justOne:true}})
db.users.deleteOne({"name":"zhangsan"})

// 删除多条文档
db.users.remove({"name":"lisi"})
db.users.deleteMany({"name":"lisi"})

4、文档查询

  • 比较操作符
描述操作符
不等于$ne
大于$gt
大于等于$gte
小于$lt
小于等于$lte
  • 逻辑操作符
描述操作符
$and
$or
$not
  • 聚合相关
描述操作符
求总和$sum
求平均数$avg
最小值$min
最大值$max
类似where$match
类似group by$group
  • 相关方法
描述方法
根据条件查询find(query,[projection])
查询并对重复字段进行去重distinct(字段名)
排序sort()
分页limit()skip()
统计count()
聚合aggregate()
  • 案例
 基本查询
// 查询所有
db.user.find()
// 查询所有,但只显示name和age字段
db.user.find({},{"_id":0,"name":1,"age":1})
// 去重并查询指定字段
db.user.distinct("name")

 根据条件运算符查询
// 查询_id等于3的用户
db.user.find({"_id":3})
// 查询年龄大于13的用户
db.user.find({"age": {"$gt":13}})

 根据逻辑运算符查询
// 查询年龄大于18小于22的用户信息
db.user.find({"age":{"$gte":18,"$lte":22}})
// 查询年龄大于18或名称不等于lisi的用户
db.user.find({$or:[{"age":{"$gt":18}},{"name":{"$ne":"lisi"}}]})

 根据指定数据类型查询,2表示字符串类型
db.user.find({"name":{"$type":2}})

 排序与分页
// 按年龄降序排序
db.user.find().sort({"age":-1})
// 查询第三和第四条数据
db.user.find().limit(2).skip(2)

 统计 
// 统计年龄大于18的用户数量
db.user.count({"age":{"$gt":18}})

 操作数组
// 查询兴趣中即有音乐和品茶的用户信息
db.user.find({"hobbies":{"$all":["music","tea"]}})
// 查询所有,但只显示兴趣的第一个元素
db.user.find({},{"name":1,"hobbies":{"$slice":[0,1]}})

 聚合
// 求年龄等于18的用户的年龄总数
db.user.aggregate([{"$match":{"age":18}},{"$group":{"_id":"$age","sum_age":{"$sum":"$age"}}}])

5、文档索引

描述命令
创建索引ensureIndex(规则)
查询所有索引getIndexes()
删除指定索引dropIndex(索引名称)
// 创建索引
db.user.ensureIndex({"name":-1})
// 删除索引
db.user.dropIndex("name_-1")
// 查年索引
db.user.getIndexes()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值