.NET 云原生架构师训练营(模块二 基础巩固 MongoDB 写入和查询)--学习笔记
2.5.3 MongoDB -- 写入和查询
- 写入
- 查询
- 查找操作符
- 逻辑操作符
- 其他
- 嵌套对象
- 数组
- 游标方法
写入
https://docs.mongodb.com/manual/tutorial/insert-documents/
- insertOne
- insertMany
db.questions.insert(
{
"_id":"003",
"title":"第三个问题",
"view":0,
"isDeleted":false,
"content":"第三个问题",
"status":"open",
"tags":["c#"],
"answers":[
{"content":"回答1"},
{"content":"回答2"},
{"content":"回答3"}
]
}
)
db.questions.insertMany(
[
{
"_id":"004",
"title":"第三个问题",
"view":0,
"isDeleted":false,
"content":"第三个问题",
"status":"open",
"tags":["c#"],
"answers":[
{"content":"回答1"},
{"content":"回答2"},
{"content":"回答3"}
]
},
{
"_id":"005",
"title":"第三个问题",
"view":0,
"isDeleted":false,
"content":"第三个问题",
"status":"open",
"tags":["c#"],
"answers":[
{"content":"回答1"},
{"content":"回答2"},
{"content":"回答3"}
]
}
]
)
查询
https://docs.mongodb.com/manual/reference/operator/query/
db.users.find(
{ age: { $gt: 18 } }, // 查询条件
{ name: 1, address: 1 } // 查询字段
).limit(5)
db.getCollection('questions').find({"title":"第三个问题"},{"title":1,"content":1})
db.getCollection('questions').find({},{"title":1,"content":1}).skip(1).limit(2)
查找操作符
| Name | Description |
|---|---|
| $eq | 等于 |
| $gt | 大于 |
| $gte | 大于等于 |
| $lt | 小于 |
| $lte | 小于等于 |
| $ne | 不等于 |
| $in | 存在于 |
| $nin | 不存在于:一般用于数组 |
// 大于等于
db.getCollection('questions').find({"view":{$gte: NumberInt(0)}})
// 存在于
db.getCollection('questions').find({"tags":{$in: ["c#"]}})
逻辑操作符
| Name | Description |
|---|---|
| $and | 满足多个条件 |
| $or | 满足多个条件中的一个 |
| $not | 不匹配,或者字段不存在 |
| $nor | 多个条件,一个都不满足 |
// 满足多个条件中的一个
db.getCollection('questions').find({$or:
[
{"tags":{$in: ["c#"]}},
{"view":{$gt:2}}
]
})
db.getCollection('questions').find({"view":{"$gt": 5}})
// 不匹配,或者字段不存在(取反)
db.getCollection('questions').find({"view": {$not: {"$gt": 5}}})
// 多个条件,一个都不满足
db.getCollection('questions').find({$nor: [{"view":{"$gt": 5}}]})
其他
| Name | Description |
|---|---|
| $exists | 存在某个字段 |
| $type | 字段的类型 |
// 存在某个字段则显示
db.getCollection('questions').find({"best": {$exists:1}})
// 不存在某个字段则显示
db.getCollection('questions').find({"best": {$exists:0}})
// 字段的类型,16代表32-byte integer
db.getCollection('questions').find({"view": {$type: 16}})
https://mongoing.com/docs/reference/bson-types.html
嵌套对象
db.getCollection('questions').find({"best.content":{$eq: "最好的答案"}})
数组
| Name | Description |
|---|---|
| $all | 所有元素匹配,匹配简单类型数组 |
| $elemMatch | 用于匹配 object 数组 |
| $size | 长度条件 |
db.getCollection('questions').find({"tags": {$in: ["c#"]}})
db.getCollection('questions').find({"tags": {$nin: ["c#"]}})
// 都必须包含
db.getCollection('questions').find({"tags": {$all: ["c#", "asp.net core"]}})
// 大小为2
db.getCollection('questions').find
// 包含 回答1 的数组
db.getCollection('questions').find({"answers": {$elemMatch: {"content": "回答1"}}})
db.getCollection('questions').find({"answers": {$elemMatch: {"content": {$gte: "回答1"}}}})
游标方法
只在 mongo shell 中有效,其他语言版本 sdk 无效
- skip
- limit
- count
- pretty 美化

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。
.NET 云原生架构师训练营(模块二 基础巩固 MongoDB 写入和查询)--学习笔记的更多相关文章
- .NET 云原生架构师训练营(权限系统 代码实现 Store.EntityFramework)--学习笔记
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
- .NET 云原生架构师训练营(模块二 基础巩固 MongoDB API实现)--学习笔记
2.5.7 MongoDB -- API实现 问题查询单个实现 问题查询列表实现 问题跨集合查询实现 问题创建实现 问题更新实现 问题回答实现 问题评论实现 问题投票实现 回答实现 QuestionC ...
- .NET 云原生架构师训练营(模块二 基础巩固 MongoDB API重构)--学习笔记
2.5.8 MongoDB -- API重构 Lighter.Domain Lighter.Application.Contract Lighter.Application LighterApi Li ...
- .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...
- .NET 云原生架构师训练营(模块二 基础巩固 MongoDB 问答系统)--学习笔记
2.5.6 MongoDB -- 问答系统 MongoDB 数据库设计 API 实现概述 MongoDB 数据库设计 设计优化 内嵌(mongo)还是引用(mysql) 数据一致性 范式:将数据分散到 ...
- .NET 云原生架构师训练营(建立系统观)--学习笔记
目录 目标 ASP .NET Core 什么是系统 什么是系统思维 系统分解 什么是复杂系统 作业 目标 通过整体定义去认识系统 通过分解去简化对系统的认识 ASP .NET Core ASP .NE ...
- .NET 云原生架构师训练营(权限系统 RGCA 架构设计)--学习笔记
目录 项目核心内容 实战目标 RGCA 四步架构法 项目核心内容 无代码埋点实现对所有 API Action 访问控制管理 对 EF Core 实体新增.删除.字段级读写控制管理 与 Identity ...
- .NET 云原生架构师训练营(模块二 基础巩固 敏捷开发)--学习笔记
2.7.1 敏捷开发 敏捷介绍 敏捷的起源 敏捷软件开发宣言 敏捷开发十二原则 生命周期对比 敏捷开发的特点 敏捷的发展 敏捷的核心 敏捷的起源 2001年,17个老头子在一起一边滑雪,一边讨论工作, ...
- .NET 云原生架构师训练营(模块二 基础巩固 MongoDB 介绍和基础)--学习笔记
2.5.1 MongoDB -- 介绍 mysql vs mongo 快速开始 mysql vs mongo 对比 mysql mongo 数据存储 table 二维表结构,需要预先定义结构 json ...
随机推荐
- moviepy音视频剪辑:moviepy中的剪辑相关类及关系
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 y在 ...
- Python中可迭代对象是什么?
Python中可迭代对象(Iterable)并不是指某种具体的数据类型,它是指存储了元素的一个容器对象,且容器中的元素可以通过__iter__( )方法或__getitem__( )方法访问. __i ...
- Robot framework 环境搭建+图标处理
场景:随着现在项目各种赶工,很多时候界面上的功能还没有实现,这时就可以先对接口进行验证,提早发现一些和预期不一致的错误. Robot framework需要的几个知识点: 测试库:RF是大树,测试库就 ...
- 5分钟入门MP4文件格式
写在前面 本文主要内容包括,什么是MP4.MP4文件的基本结构.Box的基本结构.常见且重要的box介绍.普通MP4与fMP4的区别.如何通过代码解析MP4文件 等. 写作背景:最近经常回答团队小伙伴 ...
- 老男孩培训作业day1
作业一:博客(开通博客园) 作业二:编写登录接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 作业三:多级菜单 三级菜单 可依次选择进入各子菜单 所需新知识点:列表.字典(列表和字典的相互 ...
- JavaSE08-ArrayList
1.ArrayList类概述 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 ArrayList集合的特点 底层是数组实现的,长度可以变化 泛型的使用 用于约束集合中存储元素的 ...
- 第一次软件工程与UML的编程作业
博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...
- 下载windows官网镜像并打包成iso文件
一.微软官网下载镜像地址:https://www.microsoft.com/zh-cn/software-download/ 选择所需下载的win10.win7等windows镜像(以win10为例 ...
- node目录
1 [了解nodejs] 1.1 [node简介] 1.2 [node的特点] 1.3 [如何安装] 1.4 [如何运行] 2 [es6--基本语法] 2.1 [变量的解构赋值] 2.2 [解构赋值] ...
- [日常摸鱼][POI2000]病毒-Tire图(AC自动机)+dfs
https://www.luogu.org/problemnew/show/P2444 (没有bzoj权限号T_T) 字符串题对我这种傻逼来说真是太难了x 题意:输入$n$个01组成的模式串串,判断是 ...