mongodb 日常启动命令

mongod --dbpath D:\data\db

一.启动,连接

mongodb是一个非关系型数据库

1. 启动MongoDB服务:

  安装时我并没有将mongodb服务加载进windows的servcies中,所以每次启动需要的命令是开头的日常启动命令, 注意,默认的数据库存放路径时 C:\data\db , 由于不想让c盘空间占用,所以就指定到了d盘下的路径,但是这个目录一定要创建好之后才能开启mongod服务, 否则会报错(需要自己创建这个目录其实表示你对mongodb在本机使用的认可)

mongod  选项  --dbpath 数据库存放路径

windows服务启动命令

mongodb   --install 安装windows服务
--remove 卸载windows服务

2.客户端的连接

   1.使用cmd窗口

   2.使用NoSQLBooster for MongoDB软件进行连接

二.操作数据库

数据库操作:

    show databases    查看本地磁盘数据库
use dbname 切换当前使用的数据库
db 查看当前使用的数据库
show tables 查看当前数据库存放在磁盘上的数据表 use 不存在的数据库 创建了数据库 当前创建的数据库没有存放在磁盘中
db.tablename 不存在的表名 创建数据表 - 当前数据表没有存放在磁盘中
- 如果表里有数据的话,就在磁盘上了

数据表操作:

增删改查操作

  MongoDB的操作概念

  • 使用了不存在的对象即创建该对象
  • 不限制数据结构

1.增加数据:

db.tablename.insert({"key":"value"})

官方推荐写法

db.users.insertOne({})    # 插入一条数据
db.users.insertMany([{},{},{}]) # 插入多条数据

2.查询数据

db.tablename.find() 查询符合条件的所有数据

例:db.tablename.find({"name":"robertx"})

推荐写法

db.tablename.findOne() 查询符合条件的第一条数据

3.修改数据:

db.tablename.update({"name":"tom"},{"$set":{"age":}}) # 只修改符合条件的一条数据
# $set - set修改器 强制替换覆盖

官方推荐写法

db.tablename.updateOne() 更新符合条件的第一条数据
db.tablename.updateMany() 更新符合条件的所有数据 array+Object : db.users.updateOne({"cours.name":"xxx"},{$set:{"cours.$.score":"000"}})

4.删除数据:

db.tablename.remove({})

例:db.tablename.remove({age:}) 删除所有age==73的数据

官方推荐写法

db.users.deleteOne() 删除符合条件的第一条数据
db.users.deleteMany() 删除符合条件的所有数据

三.数据类型

    ObjectId :Documents 自动生成的 _id
_id:ObjectId("5cb69a23815ea7295f8bad43") 自动生成的 json数据中不包含ObjectId类型 id类型uuid
String: 字符串,必须是utf-
Boolean:布尔值,true 或者false (在Python中 True False 首字母大写)
Integer:整数 (Int32 Int64 一般我们用Int32)
Double:浮点数 (没有float类型,所有小数都是Double)
Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Object:深度<= (就是Python中的字典,这个数据类型就是字典)
Null:空数据类型 , 一个特殊的概念,None Null
Timestamp:时间戳 通常不用这个数据类型 如果存储时间 Double
Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以表示一切时间类型)

四.数学比较符

    $lt   小于
$gt 大于
$lte 小于等于
$gte 大于等于
$ne 不等于
$eq or : 等于 $in {hobby:{$in:["tom","bob"]}} 相同字段 or
$or {$or:[{hobby:"tom"},{age:}]} 不同字段间的 or
$all {hobby:{$all:["tom","bob"]}} 查询子集
$and or , {$and:[{hobby:"tom"},{age:}]} 并列条件 之 $and
{{hobby:"tom",age:}} 并列条件 之 ,

五.查询关键字

    Array数据类型会自动遍历
$in 或者等于相同字段 db.users.find({age:{$in:[,]}})
$or 或者等于不同字段 db.users.find({$or:[{age:},{age:}]})
$and or 逗号 并列条件 $all - Array 数据类型 子集查询 db.users.find({hobby:{$all: ["TOM"]}})

六.$字符特殊用法:

存储符合条件的元素下标索引,用于修改字段
db.tablename.updateOne({hobby:"tom"},{$set:{"hobby.$":"美食"}})

七.修改器

    $set - set修改器 强制替换覆盖
$unset - 强制删除字段
$inc - 引用增加 array操作:
$push append 在array中追加 db.users.update({name:"Tom"},{$push:{hobby:"唱歌"}})
$pushAll extend 在array中追加列表中的所有元素 db.users.update({name:"AlexDSB"},{$pushAll:{hobby:["唱歌","跳舞","欧林斯"]}})
$pull remove 在array中删除一个元素 db.users.update({name:"Tom"},{$pull: {hobby:"跳舞"}})
$pullAll 在array中删除一堆元素 db.users.update({name:"Tom"},{$pullAll: {hobby:["美食","音乐"]}})
$pop pop 删除第一个 - 或最后一个 的值 db.users.update({name:"Tom"},{$pop: {hobby:}})

另一种说法

    $set 强制修改 {$set:{name:}} 强制将name字段的值修改为123 可以创建字段
$unset 删除字段 {$unset:{name:}} 强制删除name字段
$inc 引用增加 {$inc:{age:}} 对age字段引用增加 原有数值基础上增加
Array
$push 相当于列表数据类型的append 追加数据 {$push:{array:""}}
$pull 相当于列表数据类型的remove 删除Item {$pull:{array:""}}
$pop 相当于列表数据类型的pop(/-) 只能删除第一个和最后一个 {$pop:{array:/-}}
: 删除最后一个
-:删除第一个 $pushAll extend 遍历列表循环追加数据 {$pushAll:{array:["",,]}}
$pullAll 遍历列表循环删除数据 {$pullAll:{array:["",,]}}

八.skip sort  limit

  当sort,skip,limit组合使用时,它们的顺序为先排序 再跳过 最后筛选

  sort排序

    db.users.find({}).sort({ age: })
db.users.find({}).sort({ age: , birthday:- })

  limit(1) 选取条目

    db.users.find({}).limit()

  skip(1) 跳过

    db.users.find({}).skip()

  跳过选取

    db.users.find({}).skip().limit()

  分页:(组合使用可实现分页功能)

    (page-)*num # 当前页展示的数据
db.users.find({}).limit(num).skip((page-)*num)

九.与mysql概念的对比

Mongodb--基础(连接,增删改查,数据类型)的更多相关文章

  1. MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

    一.基本操作 . mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数 ...

  2. MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化

    上篇文章中 我们已经创建了EF4.1基于code first的例子  有了数据库 并初始化了一些数据  今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...

  3. 利用koa实现mongodb数据库的增删改查

    概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...

  4. python连接集群mongodb,封装增删改查

    1.下载pymongo pip install pymongo 2.直接上代码 [ini配置文件] 封装读ini省略~~ [db.py] class Database(): def __init__( ...

  5. week_one-python基础 列表 增删改查

    # Author:larlly #列表增删改查#定义列表name = ["wo","ni","ta","wo"] #定义 ...

  6. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  7. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  8. Hibernate第一个程序(最基础的增删改查) --Hibernate

    本例实现Hibernate的第一个程序,Hibernate的优点我想大家都很清楚,在这里不做过多赘述.总之,使用Hibernate对数据库操作,也就是来操作实体对象的! 项目目录: 一.第一步要做的就 ...

  9. 69.nodejs对mongodb数据库的增删改查操作

    转自:https://www.cnblogs.com/sexintercourse/p/6485381.html 首先要确保mongodb的正确安装,安装参照:http://docs.mongodb. ...

随机推荐

  1. db2用户权限

    前言:     DB2数据库权限分为实例级权限(SYSADM.SYSCTRL.SYSMAINT.SYSMON)和DB2数据库级权限(DBAMD.LOAD).DB2中用户所拥有的权限主要考虑三个方面:实 ...

  2. NOIP模拟测试1(2017081501)

    好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...

  3. 自学java坎坷之路——20155312张竞予

    20155312 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一周并没有在课堂上对教材内容进行学习,学习内容概括如下 课程分数构成,其中包括课堂测验(每 ...

  4. mysql的一些配置优化

    [mysqld]lower_case_table_names=1datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Di ...

  5. 2018.10.25 bzoj4565: [Haoi2016]字符合并(区间dp+状压)

    传送门 当看到那个k≤8k\le 8k≤8的时候就知道需要状压了. 状态定义:f[i][j][k]f[i][j][k]f[i][j][k]表示区间[i,j][i,j][i,j]处理完之后的状态为kkk ...

  6. 新加了一块硬盘,在bios中可以看的到,在系统的磁盘管理器中看不到新加硬盘

    今天新加了一块硬盘,进入bios中可以看到新加的硬盘,但是进入系统后在磁盘管理及磁盘驱动器中都看不到.并且在设备管理器下其他设备出现了ATA channel1,前面显示感叹号,如下图所示: 而且电脑变 ...

  7. MFC随笔

    设置映射模式  Y轴改为向上 dc.SetMapMode(MM_LOENGLISH);//低精度 dc.SetMapMode(MM_HIENGLISH);//高精度 文本对齐 dc.SetTextAl ...

  8. readystatechange事件

    IE为DOM文档中的某些部分readystatechange事件. 这个事件的目的是提供与文档或元素的加载状态有关的信息,但是这个事件的行为有时候也很难预测. 支持readystatechange事件 ...

  9. 理解-const

    c++ 中const和c中define的区别 (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不 ...

  10. 2.2.2synchronized同步代码块的使用

    当两个并发线程访问同一个对象object中的synchronized(this)同步代码块时,一段时间内只能有一个线程执行,另一个线程必须等待期执行完才能执行. package com.cky.bea ...