Mongodb笔记

介绍

基于v8引擎的文档型数据库

安装

二进制包解压就可以使用

bsondump                # 导出bson结构
mongo                   # 客户端
mongod                  # 服务端
mongodump               # 整体数据导出(二进制)
mongoexport             # 导出json或csv
mongoimpoort            # 导入
mongooplog              # 日志
mongoperf               # 
mongorestore            # 整体导入
mongos                  # 路由器,做集群使用
mongosniff              # 
mongostat               # 
mongotop                # 

启动服务

mongod
--dbpath                # 数据存放路径
--logpath               # 日志存放路径
--fork                  # 在后台运行
--port                  # 端口,默认27017

例如:

mongod --dbpath=/data/ --logpath=/data/a.log --fork --port 27017

连接数据库

mongo                   # 直接运行即可

入门命令

查看数据库

show databases          # 查看数据库
show dbs

选中和创建数据库

use <数据库名称>          # 有则选中,无则隐式创建

查看集合(表)

show collections
# 或
show tables

创建集合(表)

db.createCollection('表名称')

删除集合

db.集合名.drop()

删除数据库

use <数据库名>              # 先选中,再删除
db.dropDatabase()

# 增加单条数据
db.表名.insert({
    "key":"val"
})


# 增加多条数据
db.表名.insert([
    {"key":"val"},
    {"key":"val"}
])

备注:默认会带上_id

db.表名.remove({
    # 查询表达式,如像此例为空则全部删除
})

db.表名.remove({
    "age":20
})

# 第二个参数设置为真则每次只会删除一行
db.表名.remove({
    "age":20
},true)

db.表名.update(
    {"age":"20"},   # 查询表达式
    {"age":"22"}    # 整个改为
)

db.表名.update(
    {"age":"20"},   # 查询表达式
    {$set:{
        "age":22
    }}              # 只修改该列
)

修改的赋值表达式

$set                # 修改某列
$unset              # 删除某列
$rename             # 重命名某列
$inc                # 增长某列
$setOnInsert        # upsert为true,且发生了insert操作时,可补充的字段

# 可选参数
upsert              # 无匹配结果,则直接插入,(即:有则改,无则增加)例如:

# 例如
db.表名.update(
    {"age":"20"},
    {$set:{
        "age":22
    }},
    {"upsert":true}
)

db.表名.find(
    {},             # 查询表达式
    {}              # 要查询的列
)

# 查询名称为“zs”的年龄"age",第二个参数不传则是查询全部的列
db.表名.find(
    {"name":"zs"},
    {"age":1}
)

# 只查询一行
db.表名.findOne(
    {},             # 查询表达式
    {}              # 要查询的列
)

查询表达式

$ne不等于

# 查询age不等于19
db.表名.find({
    "age":{
        $ne:19
    }
})

$gt大于

$lt小于

gte大于等于

lte小于等于

$in包含多个条件的

# 查询age等于19,20,21的
db.表名.find({
    "age":{
        $in:[19,20,21]
    }
})

$nin不包含多个条件的

# 查询age不等于19,20,21的
db.表名.find({
    "age":{
        $nin:[19,20,21]
    }
})

$all查询某列,且至少包含多个条件的

# 查询field列至少包含1,2的(field是一个数组)
db.表名.find({
    "field":{
        $all:[1,2]
    }
})

$exists查询含有某列字段的文档

# 查询含有age属性的且年龄不等于19的
db.表名.find({
    "age":{
        $ne:19,
        $exists:1
    }
})

$or查询满足多个条件任一一个的

# 查询年龄等于19或是男生的
db.表名.find({
    $or:[
        {"age":19},
        {"sex":"male"}
    ]
})

$mod将查询的值除以第一个给定的值,若余数等于第二个给定的值,则返回该结果

db.表名.find({
    "age":{
        $mod:[11,0]
    }
})

$not查询不包括条件的

# 通常与正则联合使用查询那些与特定模式不匹配的文档
db.表名.find({
    "age":{
        $not:{$mod:[11,0]}
    }
})

$where遍历查询

# 查询age等于19的男生(性能低下,不推荐使用)
db.表名.find({
    $where:"this.age==19 && this.sex == 'male'"
})

游标操作

游标即查询出来返回的资源

# 声明游标,即将结果保存至变量
let cursor = db.表名.find();

# 判断是游标是否已经还有下一个
cursor.hasNext()

# 取出游标下一个单元
cursor.Next()

# 使用来取出,例如以下几个例子:
white(data.hasNext()){
    printjson(data.next());
};

# 或
for(var doc = true,cursor.hasNext()){
    printjson(data.next());
}

# 或
for(var doc = true,cursor.hasNext()){
    printjson(data.next());
}

# 或
cursor.forEach((obj)=>{
    printjson(obj);
});
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Mongodb 配置选项 通常在mongod.conf中 配置文件 设置了配置文件后启动时以自定义的配置文件启动:...
    AkaTBS阅读 1,072评论 0 6
  • 1.0 基初知识 在关系数据库会产生一些例如表连接等操作,这样会大大降低系统的性能。而在当前很多应用场景下对性能的...
    杨山炮阅读 1,383评论 0 1
  • 这里是阅读了《MongoDB权威指南》后做的相关笔记。 一、文档 文档是MongoDB的核心概念。文档就是键值对的...
    yjaal阅读 631评论 0 4
  • 一、插入并保存文档 可以使用insert方法向目标集合插入一个文档: 这个操作会给文档自动增加一个"_id"键(要...
    yjaal阅读 668评论 0 0
  • MongoDB官网:https://www.mongodb.org官网的下载页面:https://www.mong...
    我看不见阅读 493评论 0 1