Mongodb

数据库命令

  1. 查看所有数据库: show dbs
  2. 切换数据库: use db_name use不存在的数据库时 会自动创建
  3. 查看当前数据库: db
  4. 删除当前数据库: db.dropDatabase()

集合命令(对应关系型数据库的表)

  1. 查看集合: show collections
  2. 删除集合: db.集合名称.drop()
  3. 手动创建集合: db.createCollection(name,option)

数据类型

  • Object ID: 文档ID
  • String:字符串 UTF-8
  • Boolean: true/false
  • Integer
  • Double
  • Arrays
  • Object: 嵌入式的文档
  • Null
  • Timestamp
  • Date

插入

db.collection_name.insert(document)

use test_db
db.test_collection.insert({name:"xzr",age:100})
db.test_collection.find()

保存

  • 如果文档的_id已经存在则修改 不存在则添加
    db.collection_name.save(document)

更新

db.collection_name.update(,,{multi:})
query: 查询条件
update: 更新操作符
mulit: 可选,默认false,只更新找到的第一条数据;true,满足条件的全部更新。

# 替换 造成缺失age字段
db.test_collection.update({name:"xzr"},{name:"xxzzrr"})
# 更新
db.test_collection.update({name:"xzr"},{$set:{name:"xxzzrr"}})

删除

db.collection_name.remove(,{justOne:})

查询

db.collection_name.find()
db.collection_name.findOne() #查询单条
db.collection_name.find().pretty() #格式化输出

比较运算符

  • 等于: 默认等于操作 无运算符
  • 小于: $lt (less than)
  • 小于等于: $lte (less than equal)
  • 大于: $gte (greater than)
  • 大于等于: $gte (greater than equal)
  • 不等于: $ne
db.test_collection.find({name:{$ne:"xzr"}})

范围运算符

  • $in
  • $nin
db.test_collection.find({age:{$in:[10,20,30]}})

逻辑运算符

  • and: 在json中写多个条件即可
  • or: $or
# 查询年龄大于100 是否富有为true
db.test_collection.find({age:{$gte:100},money:true})

# 大于100 或 是否富有为true
db.test_collection.find({$or:[{age:{$gte:100}},{money:true}]})

# 大于100或富有 且名字为xzr
db.test_collection.find({$or:[{age:{$gte:100}},{money:true}],name:"xzr"})

正则表达式

使用 /表达式内容/ 或者 $regex 编写正则表达式

切片

  • limit()
  • skip()

投影

选择返回结果的字段

排序

  • sort()

计数

  • count()

消除重复

  • distinct

... ...

聚合命令

db.collection_name.aggregate({管道:{表达式}})

  • $group
  • $match
  • $project: 修改输入文档的结构,如重命名/增加/删除字段/创建计算结果
  • $sort
  • $limit
  • $skip
  • $unwind: 将数组类型的字段进行拆分

表达式

  • $sum: $sum:1 以一倍计数
  • $avg
  • $min
  • $max
  • $push: 结果文档中插入值到一个数组
  • $first
  • $last

索引创建

db.collection_name.ensureIndex({属性:1}) 1表示升续

posted @ 2022-02-10 16:05  LazyTiming  阅读(22)  评论(0编辑  收藏  举报