入门MongoDB看这篇就够了 ——超详细的MongoDB的增删改查学习笔记!
大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。麻烦帮忙转发一下这篇文章+关注我同时指定AND和OR} )其余的运算符就不细说了,这里只介绍最常用的。大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其
先切过去
use to_delete_db
后删除
db.dropDatabase()
==================================================================
创建集合
db.createCollection(collection_name,options)
或者直接使用集合名去插入文档,就自动创建集合
db.mycol.insert({“key” : “value”})
db.collection_name.drop()
==================================================================
API
-
save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。 -
insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
db.COLLECTION_NAME.insert(document)
db.COLLECTION_NAME.save(document)
不过下面的两个方法都已经过期,不要使用了.
insertOne()
传入一个json对象。
db.inventory.insertOne(
{ item: “canvas”, qty: 100, tags: [“cotton”], size: { h: 28, w: 35.5, uom: “cm” } }
)
insertMany()
传入一个数组,里面是Json对象。
db.inventory.insertMany([
{ item: “journal”, qty: 25, tags: [“blank”, “red”], size: { h: 14, w: 21, uom: “cm” } },
{ item: “mat”, qty: 85, tags: [“gray”], size: { h: 27.9, w: 35.5, uom: “cm” } },
{ item: “mousepad”, qty: 25, tags: [“gel”, “blue”], size: { h: 19, w: 22.85, uom: “cm” } }
])
插入行为
- 集合创建
如果该集合当前不存在,则插入操作将创建该集合。
- _id字段
在MongoDB中,存储在集合中的每个文档都需要一个唯一的 _id字段作为主键。如果插入的文档省略了该_id字段,则MongoDB驱动程序会自动为该字段生成一个ObjectId, 键名为"_id" 。
- 原子性
MongoDB中的所有写操作在单个文档级别上都是原子性的。
- 写确认
对于写入问题,您可以指定从MongoDB请求的写入操作的确认级别。
在任何数据库中,差不多查询是花样的最多的了。
过滤器
先介绍一个所谓的过滤器概念。
这个也就是对匹配的文档进行操作,如查询、投影、更改、删除。
在MongoDB里,文档是一个重要的要素,过滤器也是一个文档。
文档通过并列、嵌套形成更复杂的查询条件。
也不奇怪,MongoDB被称为文档型数据库了。
最简单的过滤器就是空过滤器。
空文档
db.inventory.find( {} )
db.inventory.find()
运算符
比较运算符
| 运算符 | 含义 |
| — | — |
| $eq | 匹配等于指定值的值。 |
| $gt | 匹配大于指定值的值。 |
| $gte | 匹配大于或等于指定值的值。 |
| $in | 匹配数组中指定的任何值。 |
| $lt | 匹配小于指定值的值。 |
| $lte | 匹配小于或等于指定值的值。 |
| $ne | 匹配所有不等于指定值的值。 |
| $nin | 不匹配数组中指定的任何值。 |
举例:
相等条件
{ : , … }
不等于条件
{:{“$ne”:}}
大于
{:{“$gt”:}}
小于
{:{“$lt”:}}
小于等于
{:{“$gte”:}}
大于等于
{:{“$lte”:}}
in
{:{“$in”:[,,…]}
逻辑运算符
| 运算符 | 含义 |
| — | — |
| $and | 用逻辑联接查询子句AND将返回两个子句都符合条件的所有文档。 |
| $not | 反转查询表达式的效果,并返回与查询表达式不匹配的文档。 |
| $nor | 用逻辑联接查询子句NOR将返回两个子句均不匹配的所有文档。 |
| $or | 用逻辑联接查询子句OR将返回符合任一子句条件的所有文档。 |
- 指定OR条件
使用$or运算符,您可以指定一个复合查询,该查询将每个子句与逻辑连接符连接在一起,OR以便该查询选择集合中至少匹配一个条件的文档。
注意它的组织方式,其中键是"$or" ;值是一个数组,数组里面是 若干个文档,当然还可以继续嵌套下去。
db.inventory.find( { $or: [ { status: “A” }, { qty: { $lt: 30 } } ] } )
- 指定AND条件
对于AND的话,当然也可以按照OR的方式依葫芦画瓢。不过,还可以直接隐士使用 ,分割多个键值对。
db.inventory.find( { status: “A”, qty: { $lt: 30 } } )
同时指定AND和OR
db.inventory.find( {
status: “A”,
$or: [ { qty: { $lt: 30 } }, { item: ‘p’ } ]
} )
其余的运算符就不细说了,这里只介绍最常用的。
其他查询技巧、用法
总结
大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。
麻烦帮忙转发一下这篇文章+关注我

同时指定AND和OR
db.inventory.find( {
status: “A”,
$or: [ { qty: { $lt: 30 } }, { item: ‘p’ } ]
} )
其余的运算符就不细说了,这里只介绍最常用的。
其他查询技巧、用法
总结
大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。
麻烦帮忙转发一下这篇文章+关注我
[外链图片转存中…(img-9ALlFaY1-1718911459326)]
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)