什么是MongoDB?
MongoDB是一个基于分布式文件存储的NoSQL数据库,由C++语言编写,旨在为高性能、高可扩展性的应用提供存储支持。MongoDB将数据存储在一个类似JSON的二进制格式BSON中,这使得它非常灵活和高效。
启动MongoDB服务
Windows和macOS:
mongod --dbpath <your_db_path>
Linux:
sudo service mongod start
连接到MongoDB:
mongo
基本操作
创建数据库
use testDatabase
插入文档
db.testCollection.insertOne({ name: "Alice", age: 25 })
- users是一个未创建的文档
db.users.insertOne({name:"沙琪马"})
- 插入多条数据到集合中
db.users.insertMany([{name:"李四"},{name:"王五"}])
查询文档
db.testCollection.find({ name: "Alice" })
-
限制查询返回结果数量
db.testCollection.find().limit(要返回的数量)
例如,返回一条数据
db.users.find().limit(1)
-
排序查询
db.testCollection.find().sort({level: 1})
注意:1代表升序,-1代表降序
当然也可以按照多个字段进行排序
db.testCollection.find().sort({level: 1, name: -1})
-
条件查询
db.users.find({level:3})
这个代表查询 level为3的数据
注意:Mongodb的数据类型是非常严格的,传入的数据类型如果错误,这不会返回任何数据
- 限制字段
db.pokemon.find({ability1: '降雨'},{name:1,stat:1})
解释:
find()内第一个{}是查询条件,第二个{}是显示的字段,
默认会显示_id字段,可以加上_id:-1就不会返回_id字段
当然也可以排除某个字段:
db.pokemon.find({ability1: '降雨'},{name:0})
-
比较运算符
大于
db.users.find({level:{$gt: 3}})
小于
db.users.find({level:{$lt: 3}})
$in 查询level为1或者3的数据
db.users.find({level:{$in: [1,3]}})
$nin() 查询level1和3以外的数据
db.users.find({level:{$nin: [1,3]}})
-
逻辑运算符号
1 $exists 查询某个字段是否存在
db.users.find({email: {$exists: true}})
true也可以换为1
false也可以换为0
注意:exists是判断字段是否存在,数据即便为null也是可以返回的
2 and Mongodb会默认把两个条件and起来
db.users.find({level:{$gte: 3, $lte: 5}})
当然可以自己指定
db.users.find({$and: [{level:{$gte:3},{level:{$lte: 5}}}]})
3 or 同上
db.users.find({$or: [{level:{$gte:3},{level:{$lte: 5}}}]})
4 not 运算符
db.users.find({level: {$not: {$eq: 3}}})
5 正则表达式
db.users.find({name: {$regex: /张/ }})
-
聚合/统计
1 countDocuments 统计文档数量
db.users.countDocuments()
当然也可以带有查询条件
db.users.countDocuments({level: {$gte: 3}})
2 findOne() 返回第一条数据
db.users.findOne({level: {$gte: 3}})
更新文档
- 更新一条数据
db.testCollection.updateOne({ name: "Alice" }, { $set: { age: 26 } })
- 更新多条数据
db.testCollection.updateMany({ age: 22 }, { $set: { age: 26 } })
查找年龄为22岁的,改为26岁
删除文档
db.testCollection.deleteOne({ name: "Alice" })
高级功能
聚合操作
db.testCollection.aggregate([ { $match: { age: { $gt: 20 } } }, { $group: { _id: "$age", total: { $sum: 1 } } } ])
索引
db.testCollection.createIndex({ name: 1 })
常见命令
- 查看当前数据库:
- db
- 查看所有数据库:
- show dbs
- 查看当前数据库中的集合:
- show collections
备份与恢复
备份数据库
mongodump --db testDatabase --out /path/to/backup
恢复数据库
标签:name,level,Mongodb,db,testCollection,find,users From: https://blog.csdn.net/iku_n/article/details/139390164mongorestore --db testDatabase /path/to/backup/testDatabase