本文共 3550 字,大约阅读时间需要 11 分钟。
在 MongoDB 中,数据库相当于 SQL 中的数据库概念。使用以下命令可以创建或切换到指定数据库:
use DATABASE_NAME
查看当前选择的数据库:
db
查看所有存在的数据库:
show dbs
要删除一个数据库,首先需要切换到该数据库:
use database_name
然后执行删除命令:
db.dropDatabase()
集合相当于 SQL 中的表。以下是基本的增删改查操作。
插入一个文档到集合中:
db.table1.insert({ "name": "alex" })
插入多个文档:
db.table1.insertMany([{ "name": "alex" }, { "name": "wupeiqi" }])
查询集合中的所有文档:
db.table1.find()
按条件查询:
db.table1.find({ "name": "alex" })
删除一个文档:
db.table1.deleteOne({ "name": "alex" })
删除多个符合条件的文档:
db.table1.deleteMany({ "name": "alex" })
删除所有文档:
db.table1.deleteMany({})
更新文档中的字段:
db.table1.update({ "name": "alex" }, { "$set": { "age": 10 } })
使用 $inc
进行加减操作:
db.table1.update({}, { "$inc": { "age": 1 } }, { "multi": true })
插入单个文档:
db.table1.insert({ "name": "alex", "age": 10 })
插入多个文档:
db.table1.insertMany([{ "name": "alex" }, { "name": "wupeiqi" }])
删除数组中的元素:
db.table1.deleteOne({ "hobbies": "read" })
使用 $pop
删除数组中的最后一个元素:
db.table1.deleteOne({ "hobbies": 1 })
使用 $pull
删除满足条件的元素:
db.table1.deleteMany({ "addr.country": "China" })
简单修改:
db.table1.update({ "name": "alex" }, { "$set": { "age": 99 } })
加减操作:
db.table1.update({}, { "$inc": { "age": -10 } }, { "multi": true })
$match 用于过滤数据,$group 用于聚合数据。
示例:
db.emp.aggregate([ { "$match": { "post": "公务员" } }, { "$group": { "_id": "$post", "avg_salary": { "$avg": "$salary" } } }])
用于投射字段,保留或隐藏字段:
db.emp.aggregate([ { "$project": { "name": 1, "post": 1, "age": 0 } }])
排序:
db.emp.find().sort({ "age": 1 })
分页:
db.emp.find().skip(5).limit(10)
获取数量:
db.table1.count({ "age": { "$gt": 30 } })
db.emp.aggregate([ { "$group": { "_id": "$post", "names": { "$push": "$name" } } }])
db.emp.aggregate([ { "$group": { "_id": "$post", "count": { "$sum": 1 } } }])
db.emp.aggregate([ { "$group": { "_id": "$sex", "count": { "$sum": 1 } } }])
db.emp.aggregate([ { "$group": { "_id": "$post", "avg_salary": { "$avg": "$salary" }, "max_salary": { "$max": "$salary" }, "min_salary": { "$min": "$salary" } } }])
db.emp.aggregate([ { "$group": { "_id": "$sex", "avg_salary": { "$avg": "$salary" } } }])
db.emp.aggregate([ { "$group": { "_id": "$post", "count": { "$sum": 1 }, "names": { "$push": "$name" } }, { "$match": { "count": { "$lt": 2 } } }, { "$project": { "_id": 0, "names": 1, "count": 1 } }])
db.emp.aggregate([ { "$group": { "_id": "$post", "avg_salary": { "$avg": "$salary" } }, { "$match": { "avg_salary": { "$gt": 10000 } }, { "$project": { "_id": 1, "avg_salary": 1 } }])
db.emp.aggregate([ { "$group": { "_id": "$post", "avg_salary": { "$avg": "$salary" } }, { "$match": { "avg_salary": { "$gt": 10000, "$lt": 20000 } }, { "$project": { "_id": 1, "avg_salary": 1 } }])
db.emp.aggregate([ { "$sort": { "age": 1, "hire_date": -1 } }])
db.emp.aggregate([ { "$group": { "_id": "$post", "avg_salary": { "$avg": "$salary" } }, { "$match": { "avg_salary": { "$gt": 10000 } }, { "$sort": { "avg_salary": 1 } }])
db.emp.aggregate([ { "$group": { "_id": "$post", "avg_salary": { "$avg": "$salary" } }, { "$match": { "avg_salary": { "$gt": 10000 } }, { "$sort": { "avg_salary": -1 } }, { "$limit": 1 }, { "$project": { "date": new Date(), "平均工资": "$avg_salary", "_id": 0 } }])
转载地址:http://kcffk.baihongyu.com/