该栏目讲叙 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()