.NET 云原生架构师训练营(模块二 基础巩固 MongoDB 写入和查询)--学习笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: - 写入- 查询- 查找操作符- 逻辑操作符- 其他- 嵌套对象- 数组- 游标方法

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 美化

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
16天前
|
Kubernetes Cloud Native Ubuntu
庆祝 .NET 9 正式版发布与 Dapr 从 CNCF 毕业:构建高效云原生应用的最佳实践
2024年11月13日,.NET 9 正式版发布,Dapr 从 CNCF 毕业,标志着云原生技术的成熟。本文介绍如何使用 .NET 9 Aspire、Dapr 1.14.4、Kubernetes 1.31.0/Containerd 1.7.14、Ubuntu Server 24.04 LTS 和 Podman 5.3.0-rc3 构建高效、可靠的云原生应用。涵盖环境准备、应用开发、Dapr 集成、容器化和 Kubernetes 部署等内容。
41 5
|
28天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
29天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
15天前
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB复制集的体系架构
MongoDB的复制集是一种集群技术,由一个Primary节点和多个Secondary节点组成,实现数据的高可用性。Primary节点处理写入请求,Secondary节点同步数据。当Primary节点故障时,Secondary节点可通过选举成为新的Primary节点。视频讲解和示意图详见正文。
|
1月前
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。
|
1月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
6月前
|
存储 NoSQL MongoDB
【MongoDB 专栏】MongoDB 与微服务架构的结合
【5月更文挑战第11天】微服务架构流行趋势下,选择合适的数据库至关重要。MongoDB作为非关系型数据库,与微服务有天然契合度。其灵活的文档模型、水平扩展性、高性能及局部事务支持,满足微服务对数据模型多样性、高可用性、快速读写的需求。实践中,需注意数据划分、索引优化、监控调优和版本控制。未来,MongoDB在微服务中的应用将更广泛,新技术将提升其在微服务架构中的价值。
117 1
【MongoDB 专栏】MongoDB 与微服务架构的结合
|
5月前
|
存储 负载均衡 NoSQL
MongoDB的架构设计基于三种集群模式
【6月更文挑战第5天】MongoDB的架构设计基于三种集群模式
229 3
|
5月前
|
存储 负载均衡 NoSQL
MongoDB架构设计
【6月更文挑战第6天】MongoDB架构设计
63 2
|
5月前
|
存储 NoSQL MongoDB
MongoDB技术架构详解
MongoDB技术架构详解
下一篇
无影云桌面