MongoDB 简单上手
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 简单上手的更多相关文章
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- mongodb 简单部署方案及实例
mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb 我这里选用rehl 5.6 ...
- .Net Core MongoDB 简单操作。
一:MongoDB 简单操作类.这里引用了MongoDB.Driver. using MongoDB.Bson; using MongoDB.Driver; using System; using S ...
- Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)
Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...
- python和mongodb简单交互
python和mongodb简单交互 1.安装pymongo: pip3 install pymongo 2.pymongo的简单用法: # /usr/bin/env python3 import p ...
- MongoDB简单CRUD场景
MongoDB简单CRUD命令操作 (1)新建数据库:use 数据库名 (2)显示所有数据库:show dbs; (3)新建集合(两种方式) 隐式创建:在创建集合的同时往集合里面添加数据---db. ...
- Tinker 热修复框架 简单上手教程
当你们看到Tinker的时候是不是有点愣逼这个是什么东西? 简单来说就是不需要重新下载app和重新安装app 来进行更新app的技术框架. 看看这个吧,我也是才学习 ,先做个学习记录 参考:Tinke ...
- NodeJS+Express+MongoDB 简单实现数据录入及回显展示【适合新人刚接触学习】
近期在看NodeJS相关 不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合 在接触NodeJS时受平时Java或者C#中API接口等开发的思 ...
- Mongodb简单介绍
1. 简单介绍 Mongodb是一种强大.灵活,可扩展的数据存储方式.属于nosql.非关系型数据库的一种. mongodb是面向文档的数据库. 尽管是非关系型数据库.可是它保留了很多关系型数据库的特 ...
随机推荐
- [Swift] 创建一个对象
创建一个对象 先写一个People类 // // People.swift // Class // // Created by YouXianMing on 15/3/18. // Copyright ...
- Win10 mysql容器启动命令
docker run --name mysql -it -p : -e MYSQL_ROOT_PASSWORD=Hongfund5013 -e MYSQL_USER=hongfund_os -e MY ...
- Python3基本数据类型(二、字符串)
Python3字符串 ①字符串比较 1.比较字符串是否相同: ==:使用==来比较两个字符串内的value值是否相同 is:比较两个字符串的id值. 2.字符串的长度比较 len():显示字符串的长度 ...
- Java.lang 包 (包装类、String类、Math类、Class类、Object类)
Java 的核心 API(Application Programming Interface)是非常庞大的,这给开发者带来了很大的方便. java.lang 包是 Java 的核心类库,它包含了运行 ...
- UML设计--人月神教
任务分配 用例图 类图 活动图 状态图 使用工具 所有图都是用VISO编辑出来的,因为VISO是比较经典工具,也是学校电脑自带的.....
- olivehc--百度开源的cdn cache
github 地址:http://git.baidu.com/olivehc/olivehc 主要是为了方便管理,百度cdn承载了全百度40%的流量,但是cdn团队只有几个人(一次培训中提到只有4个) ...
- python的os和sys模块
OS模块: 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目 ...
- Java虚拟机12:虚拟机性能监控与故障处理工具
前言 定位系统问题的时候,知识.经验是基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异常堆栈.GC日志.线程快照.堆转储快照等.经常使用适当的虚拟机监控和分析的工具可以加 ...
- Spring JPA 主键
JPA主键生成器和主键生成策略 JPA中创建实体时,需要声明实体的主键及其主键生成策略.我们有一个实体类叫做Email,其主键上声明如下: @Id @Column(name = "EMAIL ...
- ValueError: Invalid leaf XXX
Bug:ValueError: Invalid leaf XXX 无效的搜索条件——检查search函数中的domain表达式格式!是否少了括号! search(['user_id', '=', us ...