概述

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的

MongoDB以BSON结构作为存储和网络存储,BSON是一种二进制的JSON,在JSON基础上扩展,比JSON支持更多的类型,如Date 和 BinData

BSON结构具有以下特性

  • 轻量级
  • 可遍历
  • 高效性

文档(Document):Mongodb以BSON结构存放的一条记录,相当于Row
集合(Collection):存放文档的集合,相当于Table
数据库(Database):存放集合和索引及其他信息的集合

配置文件

mongod.cfg

storage:
# 数据存放的位置
dbPath: F:\Database\Mongodb\Data
journal:
# 持久化
enabled: true
# engine:
# mmapv1:
# wiredTiger: # where to write logging data.
systemLog:
# 日志的记录形式
destination: file
# 是否追加
logAppend: true
# 日志的文件(注意是文件)
path: F:\Database\Mongodb\Log\mongod.log # network interfaces
net:
# 绑定端口
port: 27017
# 绑定Ip
bindIp: 127.0.0.1

启动Mongodb

1. 按配置文件启动

mongod -config mongod.cfg

2. 指定参数启动

mongod --dbpath "F:\Database\Mongodb\Data" --logpath "F:\Database\Mongodb\Log\mongod.log"

3. 安装服务

mongod --dbpath "F:\Database\Mongodb\Data" --logpath "F:\Database\Mongodb\Log\mongod.log" --serviceName "mongodb" --serviceDisplayName "mongodb" --install

连接Mongodb

cmd 执行

1. 默认配置

mongo

2. 连接字符串

mongo mongodb://localhost

CRUD操作

Create

1. 插入单个文档

db.logs.insertOne()

var data = {"UserId" : 10, "Operate" : "登录" ,  "CreateTime" : new Date() };
db.logs.insertOne(data);

返回

{
"acknowledged" : true, //是否写入成功
"insertedId" : ObjectId("5e929706fe1792ce954f65f1") //插入行的Id
}

2. 插入多个文档

var data = [
{"UserId": 10, "Operate": "登录", "CreateTime": new Date() },
{"UserId": 10, "Operate": "点击首页", "CreateTime": new Date() },
{"UserId": 10, "Operate": "查看列表", "CreateTime": new Date() }
]
db.logs.insertMany(data);

返回

{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5e9297dbfe1792ce954f65f2"),
ObjectId("5e9297dbfe1792ce954f65f3"),
ObjectId("5e9297dbfe1792ce954f65f4")
]
}

3. db.collection.insert

insert可以插入单个文档(对象)/ 多个文档(对象的数组)

var data = [
{"UserId": 10, "Operate": "登录", "CreateTime": new Date() },
{"UserId": 10, "Operate": "点击首页", "CreateTime": new Date() },
{"UserId": 10, "Operate": "查看列表", "CreateTime": new Date() }
]
db.logs.insert(data);

返回
单个文档

WriteResult({ "nInserted" : 1 })

多个文档

BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})

4. 若不存在插入

在日常操作中,经常需要写不存在就写入的操作,在mongodb一种更新机制(upsert),若不存在就写入。

db.logs.update({ "UserId": 20 }, { "UserId": 20, "Operate": "登录", "CreateTime": new Date() }, { upsert: true })

支持upsert参数的方法

  • db.collection.update()
  • db.collection.updateOne()
  • db.collection.updateMany()
  • db.collection.findAndModify()
  • db.collection.findOneAndUpdate()
  • db.collection.findOneAndReplace()

Read

db.logs.find({"UserId":20});
db.logs.findOne({"UserId":10});

Update

1.  更新单个文档

db.logs.updateOne({ "_id": ObjectId("5e92b6d4fe1792ce954f6613") }, { $set: { "CreateTime": new Date() } })

2. 更新多个文档

db.logs.updateMany({ "UserId": 10 }, { $set: { "CreateTime": new Date() } })

Delete

1. 删除单个文档

db.logs.deleteOne({ "UserId": 20 })

2. 删除多个文档

db.logs.deleteMany({ "UserId": 10})

转发请标明出处:https://www.cnblogs.com/WilsonPan/p/12685393.html

【Mongodb】入门的更多相关文章

  1. MongoDB 入门之基础 DCL

    此文章主要记录部分主要的 MongoDB 的 DCL 操作. MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录 一.开启 MonogoDB 的权限模式 修改 MongoDB ...

  2. MongoDB入门三:MongoDB shell

    MongoDB shell MongDB shell是一个功能完备的Javascript解释器,可以运行Javascript程序.也可以用于连接MongoDB服务器,执行脚本,对数据库进行操作.类似于 ...

  3. MongoDB 入门之查询(find)

    MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ...

  4. MongoDB入门简介

    MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...

  5. mongodb入门教程二

    title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...

  6. mongodb入门教程

    title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ...

  7. MongoDb 入门教程

    MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数据存储解决方案,经常被用于非关系型数据的存储,能存储海量的数据. 常 ...

  8. MongoDB入门必读(概念与实战并重)

    MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ...

  9. mongodb入门很简单(3)

     ##简单的mongodb入门命令## 1.show dbs;      //查看当前数据库 2.use databaseName;         //选库 3.show tables/collec ...

  10. MongoDB入门实践

    MongoDB入门实践 简单介绍MongoDB,包括MongoDB的使用场景.和MySQL的对比.安装部署.Java客户端访问及总结 MongoDB? 我们遵循需求驱动技术的原则,通过一个场景来引入M ...

随机推荐

  1. Android中MVP的应用

    概述 对于代码架构,适合的才是最好的,至于是选用MVC,还是MVP,还是MVVM 一方面根据自己的擅长和喜好来决定,再一方面就是根据代码业务逻辑来决定 如果代码中压根没有用到Model层,那引入MVP ...

  2. API智能识别平台,业务逻辑智能识别

    通过API智能识别平台,可以把企业所有业务系统的应用接口能力进行自动识别,并创建为标准化的Restful API,然后再进行集成. 在企业系统集成的过程中,可能需要面对多种类型的集成接口以及专有业务系 ...

  3. win11专业版中笔记本电池图标不显示的问题

    目前市场上出售的笔记本电脑基本上都是安装win11专业版系统的,而有一位雨林木风官网用户,刚买了笔记本电脑发现没有电池图标,看不到电池的剩余电量,怎么解决这个问题呢?接下来,雨林木风小编就来分享具体的 ...

  4. Shder基础知识

    讲解非常不错 地址:http://blog.shuiguzi.com/categories/Shader/page/2/

  5. 使用 Loki 配置告警,如何将原始日志内容添加告警到注释中?

    在使用 Loki 配置警报时,若要在警报注释中添加原始日志内容,当前最佳实践是避免在警报通知中直接嵌入完整的日志行.这是因为 Loki 警报操作基于从日志派生的时间序列数据,而不是原始的日志行本身.在 ...

  6. Dubbo系列之常用配置用法简介

    Dubbo系列之常用配置用法简介 1.配置原则 配置原则,引用官方的图片: JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口. XML 次之,如果在 ...

  7. 小程序 vant sticky 组件 offsetTop

    问题 在当前版本 vant weapp 组件库中,sticky 组件 offsetTop 属性类型为 number,单位默认为 px 且无法更改,而小程序默认单位是 rpx.这导致在一些场景下,如 s ...

  8. windows下安装redis7

    一.下载地址:https://github.com/zkteco-home/redis-windows 二.解压到电脑指定目录并注册为服务 管理员方式打开cmd,进入到解压到的目录,执行redis-s ...

  9. 一步一步学习使用FireMonkey动画(2) 使用TAnimator类创建动画

    在开始研究FireMonkey提供的动画组件前,回顾一下多数时候,只是想给控件加一些突出的提醒或点缀,所以无须真的添加一个动画组件.FMX(FireMonkey的简称)提供了一系列便利的操作. 本节将 ...

  10. 如何用labelimg标注yolo数据集,并利用工具自动划分数据集

    视频演示 如何用labelimg标注yolo数据集,并利用工具自动划分数据集_哔哩哔哩_bilibili 1 labelimg标注数据集 1.1 labelimg工具介绍 LabelImg是一款开源的 ...