欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基础

程序员文章站 2022-03-03 16:27:12
...

关键词

database           数据库
collection           数据库表/集合
document          数据记录行/文档
field                   数据字段/域
index                 索引
primary              主键,MongoDB将_id作为主键

MongoDB - 连接

mongod --fork --logpath://log_path --datapath://data_path

MongoDB - 操作

数据库操作:

use db_name                 #切换到da_name数据库,不存在则创建数据库
show dbs                    #查看所有数据库(没有数据的库除外)
db.dropDatabase()           #删除当前数据库
db.collection.drop()        #删除集合
db.collection.remove({})    #清空集合

文档(数据)操作:

db_name.insert({'name':'value'})     #插入数据
db.collection.insert(document)       #插入文档

db.collection.update(
    <query>,  #查询条件
    <update>,  #update对象和操作符
    {
        upsert: <boolean>,        #可选,如果记录不存在是否插入新对象,默认False
        multi: <boolean>,         #可选,默认只更新找到的第一条记录,默认为False
        writeConcern: <document>  #可选,抛出异常的级别
    }
)

db.collection.save(
    <document>,                   #用来替换的文档数据
    {
        writeConcern:<document>   #可选,抛出异常的级别
    }
)

db.collection.remove(
    <query>,    #删除条件
    {
        <justOne>,               #可选,如果设置为True或1,则只删除1条
        <writeConcern: <document> #可选,抛出异常的级别
   }
)

db.collection.find()              #非格式化显示所有数据
db.collection.find().pretty()     #格式化显示所有数据
db.collection.findOne()           #只查询一条数据

查询条件语句 query

db.collection.find({'by':'value'}).pretty()           #by "= value"
db.collection.find({'likes': {$lt: 50}}).pretty()     # likes < 50 
db.collection.find({'likes': {$lte: 50}}).pretty()    # likes <= 50
db.collection.find({'likes': {$gt: 50}}).pretty()     # likes > 50
db.collection.find({'likes': {$gte: 50}}).pretty()    # likes >= 50
db.collection.find({'likes': {$ne: 50}}).pretty()     # likes != 50

操作符 $

db.collection.find({'by':'value'}, {'like': {$lt:50}}).pretty()  #find可以传入多个参数

db.collection.find(
    {
        $or:[                    # $or 操作符,满足后续任一条件则输出
            {key1: value1}, {key2: value2}
        ]
    }
).pretty()

db.col.find({"likes": {$gt:50}, $or: [{"by": "by1"},{"title": "title1"}]}).pretty()
# and 与 or 联用,组合查询

db.collection.find({'title' : {$type: 2}})    #type操作符,判断指定属性类型,较少用

db.collection.find().limit(num)    #limit操作符,指定输出数据数量
db.collection.find().skip(num)     #skip操作符,跳过指定数量后查询

db.collection.find().sort(1/-1)    #sort排序,1为升序,-1降序

索引 index

添加索引可以有效的加快指定数据的查询速度

db.collection.ensureIndex({key: 1})           #创建索引

聚合 aggregate

主要用于处理数据,统计、求和、平均值等

db.collection.aggregate(AGGREGATE_OPERTION)  # 基本格式

db.collection.aggregate(
    [
        {
            $group :         #给查询后的数据分组标识
                {
                    _id : "$user",    #格式化输出,user
                    num_tutorial : {$sum : 1}    #计算总和
                }
         }
    ]
)
$sum: 计算综合
$avg: 计算平均值
$min: 获取集合的最小值
$max: 获取集合的最大值
$push: 在结果文档中插入值到一个数组
$addToSet: 在结果文档中插入值到一个数组中,不创建副本
$first: 根据排序获取第一个文档数据
$last: 根据排序获取最后一个文档数据