MongoDB 是什么

MongoDB 是一种非关系型数据库(NoSQL)。

MongoDB中的术语解释

  • 文档(document):形如

    {
    name: "sue", <---- field: value
    age: 26, <---- field: value
    status: "A" <---- field: value
    groups: [ "news", "sports" ] <---- field: value
    }

    的一条记录,就叫文档。文档由 field and value pairs 组成,与JSON对象相似。

    • 区分大小写
    • field唯一 , 不可重复
    • 文档可嵌套
    • 键值对是有序的
  • 集合:集合就是一组文档

SQL 与 MongoDB 术语比较

SQL术语 MongoDB术语 解释说明
database database 数据库
table collection 表、集合
row document 记录、文档
column field 字段、域
index index 索引
table joins 表连接、MongoDB不支持
primary key primary key 主键、MongoDB自动将_id字段设置为主键

安装 MongoDB

具体因版本不同,不宜赘述,最好参考官方文档。

连接 MongoDB 数据库

连接数据库前你需要确认:

  • 你已经成功安装MongoDB,并启动了MongoDB服务。
  • 你将MongoDB安装目录下的 bin文件夹路径添加到了环境变量中。
  • 在 cmd 中输入 mongo ,回车。然后就可以看到MongoDB shell 形式的客户端。

MongoDB shell 中使用命令

MongoDB shell 支持JS语法,可直接书写JS语句。

  • show dbs 显示所有数据库

  • use dbname MongoDB 不需要单独的语句创建数据库,

    直接使用就行。若数据库存在,则使用;否则创建之后使用。

  • db 显示当前所在数据库

> stu = {
... name: 'jhon',
... age:21}
{ "name" : "jhon", "age" : 21 }
  • 通过上述语句可以创建一个stu对象
> db.students.insert(stu)
WriteResult({ "nInserted" : 1 })
> db.students.insert({name: 'Amy'})
  • 这样将对象添加进数据库
查询
> db.students.find()
{ "_id" : ObjectId("5ba9dfb9e840eb1e9186871e"), "name" : "jhon", "age" : 21 }
> db.students.findOne()
{
"_id" : ObjectId("5ba9dfb9e840eb1e9186871e"),
"name" : "jhon",
"age" : 21
}

"_id"是MongoDB默认增加的,用来唯一标识一个文档

修改
  • 直接修改,会替换原数据,无法进行单个key-value的更改
> db.students.update({name: 'jhon'},{name: 'jhonc'})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.students.findOne()
{ "_id" : ObjectId("5ba9dfb9e840eb1e9186871e"), "name" : "jhonc" }
可以看到 age 属性也没有了。
  • 通过对象修改
> stu_obj = db.students.findOne({name: "Amy2"})
{
"_id" : ObjectId("5ba9e3eee840eb1e91868720"),
"name" : "Amy2",
"age" : 16,
"sex" : "male"
}
> stu_obj.name = "Jhon2"
Jhon2
> db.students.update({name: "Amy2"}, stu_obj)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> stu_obj = db.students.findOne({name: "Amy2"})
null
> stu_obj = db.students.findOne({name: "Jhon2"})
{
"_id" : ObjectId("5ba9e3eee840eb1e91868720"),
"name" : "Jhon2",
"age" : 16,
"sex" : "male"
}
删除
> db.students.remove({name: "Jhon2"})
删除单条
> db.students.remove({ })
清空

使用Python操作MongoDB数据库

安装 pymongo
from pymongo import MongoClient
import datetime
# 连接数据库
client = MongoClient() # 会连接到默认地址和端口,即 127.0.0.1:27017
# # 也可以写成这样
# client = MongoClient('localhost', 27017)
# client = MongoClient('mongodb://localhost:27017/') # 创建数据库
db = client.test_database # 创建名叫 test_database 的数据库
# # db = client['test-database'] # 增加文档
# 创建一条文档
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()}
# 将post添加到数据库,并获得"_id"
post_id = db.posts.insert_one(post).inserted_id

MongoDB 简单上手的更多相关文章

  1. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  2. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

  3. .Net Core MongoDB 简单操作。

    一:MongoDB 简单操作类.这里引用了MongoDB.Driver. using MongoDB.Bson; using MongoDB.Driver; using System; using S ...

  4. Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)

    Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...

  5. python和mongodb简单交互

    python和mongodb简单交互 1.安装pymongo: pip3 install pymongo 2.pymongo的简单用法: # /usr/bin/env python3 import p ...

  6. MongoDB简单CRUD场景

    MongoDB简单CRUD命令操作 (1)新建数据库:use 数据库名 (2)显示所有数据库:show dbs; (3)新建集合(两种方式)  隐式创建:在创建集合的同时往集合里面添加数据---db. ...

  7. Tinker 热修复框架 简单上手教程

    当你们看到Tinker的时候是不是有点愣逼这个是什么东西? 简单来说就是不需要重新下载app和重新安装app 来进行更新app的技术框架. 看看这个吧,我也是才学习 ,先做个学习记录 参考:Tinke ...

  8. NodeJS+Express+MongoDB 简单实现数据录入及回显展示【适合新人刚接触学习】

    近期在看NodeJS相关 不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合 在接触NodeJS时受平时Java或者C#中API接口等开发的思 ...

  9. Mongodb简单介绍

    1. 简单介绍 Mongodb是一种强大.灵活,可扩展的数据存储方式.属于nosql.非关系型数据库的一种. mongodb是面向文档的数据库. 尽管是非关系型数据库.可是它保留了很多关系型数据库的特 ...

随机推荐

  1. java笔记--重定向输出流实现程序输出到日志

    重定向输出流实现程序输出到日志 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877248.html "谢谢-- 利用Sy ...

  2. sort、sorted、heapq、bisect排序

    aa=[1,2,8,7,0,13,28,3]sorted(aa) #原list不变,从小到大排序 aa.sort() #改变原lisaa.sort(reverse=True) #反转 for i in ...

  3. Java实例---flappy-bird实例解析

    第一天: 实现背景图片和小鸟的动态飞行效果 package com.ftl.flappybird.day2; import java.awt.Color;//颜色 Color.class import ...

  4. Exchange 2016证书配置

    配置证书: 第一步,在ECP界面生成证书请求文件: 1.在“服务器 —>证书”界面,选择一台服务器,点击“+”来添加证书申请,如下图: 2.默认下一步, 3.填写证书的友好名称,如下图: 4.默 ...

  5. windows10 彻底卸载 Docker 和 DockerNAT

    删除docker程序 记事本新建脚本文件 a.ps1,内容如下: $ErrorActionPreference = "SilentlyContinue" kill -force - ...

  6. ZT --- extern "C"用法详解 2010-08-21 19:14:12

    extern "C"用法详解 2010-08-21 19:14:12 分类: C/C++ 1.前言: 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus ...

  7. OC文件操作2

    1.对文件本身的操作 NSManager 2.对文件内容的操作 NSHandle 文件句柄 NSFileHandle * fh = [NSFileHandle fileHandleForReading ...

  8. 在python命令行执行sudo命令

    def test(): sudoPassword = 'test' command = '/opt/lampp/lampp stopmysql' str = os.system('echo %s|su ...

  9. codeforces 722E Research Rover

    codeforces 722E Research Rover 题意 \(1e5*1e5\)的棋盘中有\(2000\)个坏点,初始给定一个值\(s(1<=s<=1e6)\).从棋盘左上角走到 ...

  10. 利用Fiddler2和Proxifier分析你用的中国菜刀是否带有后门

    为了避免自己辛辛苦苦拿下的站点被一些拿来主义者不费吹灰之力就据为己有,下面来教大家如何检测菜刀有没有留后门. 对于有没有后门这个问题,大牛们会说抓包看一下就行了,那如何抓包呢?有很多软件可以,这里使用 ...