先切过去

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代码。

麻烦帮忙转发一下这篇文章+关注我

就这一次!拼多多内部架构师培训Kafka源码笔记(现已绝版)

同时指定AND和OR

db.inventory.find( {

status: “A”,

$or: [ { qty: { $lt: 30 } }, { item: ‘p’ } ]

} )

其余的运算符就不细说了,这里只介绍最常用的。

其他查询技巧、用法

总结

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

麻烦帮忙转发一下这篇文章+关注我

[外链图片转存中…(img-9ALlFaY1-1718911459326)]

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐