不过下面的两个方法都已经过期,不要使用了.
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’ } ]
} )
其余的运算符就不细说了,这里只介绍最常用的。
其他查询技巧、用法
嵌套文档
说白了,那些过滤器不仅仅可以出现数字、字符串这些,可以用文档过滤。
如:
db.inventory.find( { size: { h: 14, w: 21, uom: “cm” } } )
嵌套字段
就像使用 对象一样,链式地选择某个字段。
db.inventory.find( { “size.h”: { $lt: 15 } } )
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
写在最后
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源 、讲解视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java) [外链图片转存中…(img-DwbHhdsM-1712061110685)]
写在最后
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
[外链图片转存中…(img-JPuEuoj4-1712061110686)]
[外链图片转存中…(img-2WvbqIyj-1712061110687)]
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
参考文章
发表评论