.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 ...
随机推荐
- 注册dll命令
向系统中注册dll的方法,如下(直接回车即可注册): regsvr32
- Django+Nginx+uWSGI生产环境部署
生产环境中的数据流 参考文档: wsgi详解:https://blog.csdn.net/li_101357/article/details/52748323 wsgi协议介绍(萌新版):https: ...
- 老猿学5G扫盲贴:中国移动5G融合计费漫游计费架构和路由方案
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...
- PHP代码审计分段讲解(6)
14 intval函数四舍五入 <?php if($_GET[id]) { mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_M ...
- 题解 CF611H 【New Year and Forgotten Tree】
Solution 提供一种新思路. 首先考虑如何判断一个状态是否合法. 考虑把所有十进制长度一样的数缩成一个点. 这样的点的个数 \(\le 5\). 蒟蒻猜了一个结论:只要满足对于所有缩出来的点的子 ...
- CSP-S 初赛最后的复习
2020CSP-S 模拟赛1 3.一个圆形水池中等概率随机分布着四只鸭子,那么存在一条直径,使得鸭子全在直径一侧的概率是(). A.\(\frac 1{16}\) B.\(\frac 1{8}\) C ...
- 题解-The Number of Good Intervals
题面 The Number of Good Intervals 给定 \(n\) 和 \(a_i(1\le i\le n)\),\(m\) 和 \(b_j(1\le j\le m)\),求对于每个 \ ...
- STL——容器(Map & multimap)的简述与构造
1. map/multimap 的简介 map 是标准的关联式容器,一个 map 里存储的元素是一个键值对序列,叫做 (key,value) 键值对.它提供基于 key 快速检索数据的能力. map ...
- 哔哩哔哩批量采集器(支持windows和mac)
链接:https://pan.baidu.com/s/1jW2ea0Cl1xL5xN9DuB8Fcw 密码:klyw
- 如何在 Windows 10 上安装 WSL 2
翻译自 Joey Sneddon 2020年10月30日的文章<How to Install WSL 2 on Windows 10> [1] 如果您想在最新的 Windows 版本中尝试 ...