该栏目讲叙 MongoDB 相关的知识,包括简介、各模块的操作和与 Spring 的整合
数据库
| 描述 | 命令 |
|---|
| 创建或切换数据库 | use 库名 |
| 显示当前数据库 | db |
| 显示所有数据库 | show dbs |
集合
-
概述:一组文档集合,类似于关系型数据库中的表
-
相关操作
| 描述 | 命令 |
|---|
| 创建集合 | db.createCollection(name,[option]) |
| 显示集合 | show collections |
| 删除集合 | db.集合.drop() |
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 |
| 描述 | 操作符 |
|---|
| 求总和 | $sum |
| 求平均数 | $avg |
| 最小值 | $min |
| 最大值 | $max |
| 类似where | $match |
| 类似group by | $group |
| 描述 | 方法 |
|---|
| 根据条件查询 | find(query,[projection]) |
| 查询并对重复字段进行去重 | distinct(字段名) |
| 排序 | sort() |
| 分页 | limit()、skip() |
| 统计 | count() |
| 聚合 | aggregate() |
db.user.find()
db.user.find({},{"_id":0,"name":1,"age":1})
db.user.distinct("name")
db.user.find({"_id":3})
db.user.find({"age": {"$gt":13}})
db.user.find({"age":{"$gte":18,"$lte":22}})
db.user.find({$or:[{"age":{"$gt":18}},{"name":{"$ne":"lisi"}}]})
db.user.find({"name":{"$type":2}})
db.user.find().sort({"age":-1})
db.user.find().limit(2).skip(2)
db.user.count({"age":{"$gt":18}})
db.user.find({"hobbies":{"$all":["music","tea"]}})
db.user.find({},{"name":1,"hobbies":{"$slice":[0,1]}})
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()