MongoDB常用操作

MongoDB 是一个基于分布式文件存储的开源数据库系统,它使用 JSON 类似的文档结构来存储数据。下面是一些 MongoDB 中常用的命令和操作:

连接到 MongoDB

  • 使用 mongosh 命令行工具连接到本地 MongoDB 服务器:
    mongosh  
    
  • 连接到远程 MongoDB 服务器:
    mongosh  <hostname>:<port>/<database> -u <username> -p <password>
    

数据库操作

  • 显示所有数据库:
    show dbs
    
  • 切换/选择数据库:
    use <database_name>
    
  • 创建或切换到新数据库(如果不存在则创建):
    use new_database
    

集合操作

  • 显示当前数据库中所有的集合:
    show collections
    
  • 创建集合(通常不需要手动创建,插入文档时会自动创建):
    db.createCollection("collection_name")
    
  • 删除集合:
    db.collection_name.drop()
    

文档操作

  • 插入单个文档:
    db.collection_name.insertOne({ key: value, ... })
    
  • 插入多个文档:
    db.collection_name.insertMany([{ key1: value1, ... }, { key2: value2, ... }])
    
  • 查询文档:
    db.collection_name.find({ key: value, ... }).pretty() // pretty() 使输出更易读
    
  • 更新单个文档:
    db.collection_name.updateOne({ key: value, ... }, { $set: { key: newValue, ... }})
    
  • 更新多个文档:
    db.collection_name.updateMany({ key: value, ... }, { $set: { key: newValue, ... }})
    
  • 删除单个文档:
    db.collection_name.deleteOne({ key: value, ... })
    
  • 删除多个文档:
    db.collection_name.deleteMany({ key: value, ... })
    

其他常用命令

  • 查看帮助信息:
    help
    
  • 获取当前使用的数据库名称:
    db.getName()
    
  • 退出 MongoDB shell:
    exit
    

拓展命令

  • 分页
var pageSize = 10;  // 每页显示的记录数
var page = 2;       // 页码,从1开始
var skipCount = (page - 1) * pageSize;  // 计算需要跳过的记录数

db.users.find().skip(skipCount).limit(pageSize).pretty();
  • 查看索引
db.users.getIndexes()
  • 查找users集合里面uid字段重复的数据
db.users.aggregate([
  {
    $group: {
      _id: "$uid",
      count: { $sum: 1 }
    }
  },
  {
    $match: {
      count: { $gt: 1 }
    }
  }
])
  • 查找所有uid有值的数量
db.users.countDocuments({ uid: { $exists: true, $ne: null } })
  • uid去重后的数据
db.users.distinct("uid")
  • 更新数组内容

举例(更新permits.name='bb’的数据,type改成3)
{
_id: ObjectId(“64eef1f30eff0124b4146639”),
did: ‘10000’,
name: ‘xx组’,
pid: ‘/’,
uid: ‘64773bdb97acf80031f4ef56’,
permits: [
{ type: 2, name: ‘bb’, _id: ‘64eff33769e3026e841d0b40’ },
{ type: 3, name: ‘aa’, _id: ‘64773bdb97acf80031f4ef56’ }
],
modifyTime: 1693451888884,
__v: 0
}

db.groups.updateOne(
  { 
    name: 'xx组'
  }, 
  { 
    $set: { 'permits.$[element].type': 3 } 
  },
  { 
    arrayFilters: [ { 'element.name': 'bb' } ] 
  }
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值