mongodb模糊查询_MongoDB的CRUD基本操作

fdeebe262e40f79c0a49c145281efff7.png

原创:牛津小马哥Python后端工程师小李哥。

ad2c224d5f28dd82ff75d701c5285aa3.png

在上周的推文中,我们介绍了MongoDB的数据库和集合的操作,现在,让我们来继续学习mongodb的另一个操作:CRUD

CRUD操作:创建、读取、更新、删除文档

创建操作(C)

创建或插入操作即向集合“collection”添加新的文档“documents”。如果插入时集合不存在,插入操作会创建该集合。

插入一个文档到文档集合中:

  • db.collection.insert()
> db.new_db.insert({name:'good day',content:{number:"8",place:"part"}})
WriteResult({ "nInserted" : 1 })

同时插入多个文档到集合中:

  • db.collection.insertMany()
>db.new_db.insertMany([{name:"rainy",content:{"number":"6","place": "part"}},{name:"sunny",content: {"number":"16", "place": "part"}}])
{"acknowledged" : true,"insertedIds" : [ObjectId("5df5ff197a95a0ed40e59705"),ObjectId("5df5ff197a95a0ed40e5970v")]
}

读取操作(R)

从集合中检索文档;即从文档中查询集合。MongoDB提供了以下方法来读取集合中的文档:

  • db.collection.find()

可以指定过滤器或条件来标识返回的文档。

查询所有数据

> db.new_db.find()
{ "_id" : ObjectId("5df5fd2d7a95a0ed40e59705"), "name" : "good day", "content" : { "number" : "6", "place" : "part" } } { "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "rainy", "content" : { "number" : "6", "place" : "part" } }
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }

如果你需要以易读的方式来读取数据,可以使用pretty() 方法

pretty() 方法以格式化的方式来显示所有文档。

> db.new_db.find().pretty()"_id" : ObjectId("5df5fd2d7a95a0ed40e59705"),"name" : "good day","content" : {"number" : "6","place" : "part"}
}"_id" : ObjectId("5df5ff197a95a0ed40e59709"),"name" : "rainy","content" : {"number" : "8","place" : "part"}
}"_id" : ObjectId("5df5ff197a95a0ed40e5970v"),"name" : "sunny","content" : {"number" : "16","place" : "part"}
}

查询中也可指定只返回哪些键,返回的结果只有“name”这个键的数据

> db.new_db.find({},{name:1})
{ "_id" : ObjectId("5df5fd2d7a95a0ed40e59705"), "name" : "good day" }
{ "_id" : ObjectId("5df5ff197a95a0ed40e59709"), "name" : "rainy" }
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny" }

查询数据库中带有指定键值的文档数据

> db.new_db.find({name:"rainy"})
{ "_id" : ObjectId("5df5ff197a95a0ed40e59709"), "name" : "rainy", "content" : { "number" : "8", "place" : "part" } }

$in方法:查询某个键满足在“$in”中指定的集合中的子集(检索name的字段值为“sunny”或者“rainy”的所有文档)

> db.new_db.find({name:{$in:["sunny","rainy"]}})
{ "_id" : ObjectId("5df5ff197a95a0ed40e59709"), "name" : "rainy", "content" : { "number" : "8", "place" : "part" } }
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }

AND条件:复合查询可以在集合文档的多个字段上指定条件。查询出的文档需同时满足指定的条件。

> db.new_db.insert({name:"rainy","content" : { "number" : "6", "place" : "part"},time:"15"})
WriteResult({ "nInserted" : 1 })
> db.new_db.find({name:"rainy",time:"15"})
{ "_id" : ObjectId("5df60eee7a95a0ed40e5970b"), "name" : "rainy", "content" : { "number" : "6", "place" : "part" }, "time" : "15" }

$or:查询出的文档需至少满足指定的一个条件

> db.locla.find({$or:[{name:"sunny"},{time:"15"}]})
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }
{ "_id" : ObjectId("5df60eee7a95a0ed40e5970b"), "name" : "rainy", "content" : { "number" : "8", "place" : "part" }, "time" : "15" }

Mongodb中的条件操作符:$gt(>)、$gte(>=)、$lt(<)、$lte(<=)、$ne(!=)

> db.new_db.insert({name:"test","content" : { "number" : "6", "place" : "part"},time:15})
WriteResult({ "nInserted" : 1 })
> db.new_db.find({time:{$gte:10}})
{ "_id" : ObjectId("5df612ba7a95a0ed40e5970c"), "name" : "test", "content" : { "number" : "8", "place" : "part" }, "time" : 15 }

Like:模糊查询

(查询包含字母“u”的结果,等同于“like '%a%'”)

> db.new_db.find({name:/u/})
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }

Count:查询记录条数,看数据中有多少条文档。

> db.new_db.count()
5

Sort :对数据进行排序

  • 升序
> db.new_db.find({"name": "sunny"}).sort({"time": -1})
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }
  • 降序
> db.new_db.find({"name": "sunny"}).sort({"time": 1})
{ "_id" : ObjectId("5df5ff197a95a0ed40e5970v"), "name" : "sunny", "content" : { "number" : "16", "place" : "part" } }

Limit:限制返回的结果数量

> db.new_db.find().limit(2)
{ "_id" : ObjectId("5df5fd2d7a95a0ed40e59705"), "name" : "good day", "content" : { "number" : "6", "place" : "part" } } { "_id" : ObjectId("5df5ff197a95a0ed40e59709"), "name" : "rainy", "content" : { "number" : "8", "place" : "part" } }

更新操作(U)

使用 update() 和 save() 方法来更新集合中的文档

更新操作是修改现有的文档。有以下方法来更新集合文档。

  • db.collection.updateOne()
  • db.collection.updateMany()
  • db.collection.replaceOne()

指定条件或过滤器标识要更新的文档,再使用“$set”更新数据的内容。

> db.new_db.updateOne({name:"test"},{$set:{time:10}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

在MongoDB中,更新操作针对单个集合。对多个文档进行更新,使用updateMany即可。

 db.collection.replaceOne() 用来替换基于过滤器的集合中的一个文件。

要替换除_id 字段以外的文档的所有内容,请将一个全新的文档作为第二个参数传递给:

db.collection.replaceOne()

替换文档时,替换文档必须仅由字段/值对组成。替换文档可以具有与原始文档不同的字段

> db.new_db.replaceOne({name:"good day"},{name:"good day",content:"modified",time:22})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

删除操作(D)

指定条件或过滤器来找到要删除的文档。有以下删除集合文档的方法。

  • db.collection.deleteOne()
  • db.collection.deleteMany()
  • db.collection.remove()
> db.new_db.deleteOne({name:"good day"})
{ "acknowledged" : true, "deletedCount" : 1 }

查询出“name”值为“good day”的文档 ,并将其删除

deleteOne:即使多个文档可能与指定过滤器匹配,也最多删除一个与指定过滤器匹配的文档。

deleteMany:删除所有匹配指定过滤条件的文档。

Remove:删除单个文档或与指定过滤器匹配的所有文档。不传入条件时,删除所有的文档。

以上内容便是mongodb的CRUD操作介绍,感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java有关问题,java经典有关问题!

java经典问题&#xff01;&#xff01;&#xff01;问题一&#xff1a;与equal的区别&#xff1f;和 equals 都是比较的,而前者是运算符,后者则是一个方法,基本数据类型和引用数据类型都可以使用运算符,而只有引用类型数据才可以使用 equals,下面具体介绍一下两者的用法以及区别…

python怎么创业_python创业

从GitHub中整理出的15个最受欢迎的Python开源框架。这些框架包括事件I/O&#xff0c;OLAP&#xff0c;Web开发&#xff0c;高性能网络通信&#xff0c;测试&#xff0c;爬虫等。Django:PythonWeb应用开发框架Django应该是最出名的Python框架&#xff0c;GAE甚至Erlang都有框架受…

python开发需要什么基础_零基础学习Python需要用什么开发工具?

对于学习Python的小伙伴&#xff0c;小编首推的Pycharm。首先&#xff0c;PyCharm用于一般IDE具备的功能&#xff0c;比如&#xff0c; 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制另外&#xff0c;PyCharm还提供了一些很好的功能用于Djan…

php send helo/ehlo first错误,phpmailer发送邮件提示SMTP server error怎么回事?

以下是我的代码错误提示信息为&#xff1a;SMTP server error: Error: send HELO/EHLO first如果把SMTPAuth改为true&#xff0c;错误为SMTP Error: Could not authenticate. Mail errorSMTP Error: Could not authenticate.请教大神是什么原因&#xff1f;是不是还需要哪些设置…

python elasticsearch_python elasticsearch模块使用

加载模块from elasticsearch import Elasticsearch连接ESes Elasticsearch(["172.30.6.12"])查询res es.search(index"test-index", body{"query":{"match_all":{}}})# 查询请求主机是ai.baidu.com 所有信息res es.search(index&qu…

php ci model条件查询,php – CodeIgniter中的多条件WHERE子句

我想删除一些像核心PHP中的查询这样的数据WHERE user_id$id AND sender_id$send_id OR user_id$send_id AND sender_id$id所以我在CodeIgniter中尝试使用Active Record,如下所示&#xff1a;$this->db->where(user_id ,$id);$this->db->or_where(user_id ,$send_id…

python语言打印菱形_Python 实现打印单词的菱形字符图案

Python 实现打印单词的菱形字符图案我就废话不多说了&#xff0c;还是直接看代码吧&#xff01;a [1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1]b [ * 2 * (7 - i) Good * i for i in a]for line in b:print(line)程序运行结果如下&#xff1a;补充知识&#xff1a;python打印菱…

java快捷键查看目录,java取得快捷方式指向的路径

当前位置:我的异常网 行业应用 java取得快捷方式指向的路径java取得快捷方式指向的路径www.myexceptions.net 网友分享于&#xff1a;2013-08-17 浏览&#xff1a;5次java获得快捷方式指向的路径import java.io.ByteArrayOutputStream;import java.io.File;import java.io.F…

python 编程算法_python语言编程算法

编程题1 台阶问题/斐波那契一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。fib lambda n: n if n < 2 else fib(n - 1) fib(n - 2)第二种记忆方法def memo(func):cache {}def wrap(*args):if args not in cache:cac…

php邮件中文乱码,phpmailer 发送邮件中文乱码问题的解决方法总结

$mail new PHPMailer();复制代码2&#xff1a;设置邮件的编码&#xff1b;$mail->CharsetUTF-8;复制代码相信有不少朋友是设置成"GBK"或“GB2312”的&#xff0c;我开始也是&#xff0c;后来了解到Mail是国际化的&#xff0c;如果想在像Gmail等那样的国际化邮箱正…

python白森_氧气恋人小说-江白森修辞在线阅读-829阅读网

江白森002.再次见到江白森的时候是三天后&#xff0c;也就是军训的第二天。晚间的时候&#xff0c;以小组为单位举行篝火晚会。修辞坐在树枝堆前&#xff0c;看着堆积的树枝霎时间被点燃&#xff0c;火光一瞬间炸裂&#xff0c;越来越旺。树堆那边的人像是在火中沐浴一般&#…

php代码加文件后缀,php中一行代码获取文件后缀名

...quot; 在字符串中最后一次出现的位置&#xff1a;<?php echo strrpos("I love php, I love php too!","php");?>定义和用法strrpos() 函数查找字符串在另一字符串中最后一次出现的位置(区分php strrpos()函数用于查找字符串在另一字符串中最后一…

设计一个程序实现两个任意长的整数的求和运算_自然数集,整数集,有理数集等都有字母表示,为什么无理数集没有...

在网上翻到一个非常有意思的问题&#xff1a;这个问题乍看起来无厘头&#xff0c;但实际上是个非常深刻的问题&#xff0c;涉及到抽象代数(abstract algebra)的一些基本概念&#xff0c;因此我打算写篇文章来详细阐述一下。人类的数学从数数开始&#xff0c;最早诞生的概念是自…

php7 str split,PHP7.4新特性预览

虽然PHP 7.4还未发布&#xff0c;但是RFC已经确定了该版本的一些新性。这个版本的改动有点多&#xff0c;有很多实用性功能。发布日期可能在2019年12月左右&#xff0c;但尚待确认。让我们看看有那些地方的改动。短闭包 RFC属性类型定义 RFCNull Coalescing Assignment Operato…

python实现中撤销上一步的代码mac_一个“MacBook”新手的Python“笨办法”自学之旅 #第六章:常用的简易Python命令、符号、代码、格式化字符串...

第六章&#xff1a;常用的简易Python命令、符号、代码、字符串《“笨办法”学Python》这本书中&#xff0c;确实用了较多篇幅来介绍Python的一些常用简单的命令、符号、代码和字符串等&#xff0c;对于像我这样的自学新手&#xff0c;真的是非常棒&#xff0c;因为它们可以帮我…

php strpo函数,php strpos函数有什么用

php strpos函数有什么用&#xff1f;定义和用法strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)。注释&#xff1a;strpos() 函数是区分大小写的。注释&#xff1a;该函数是二进制安全的。相关函数&#xff1a;strrpos() - 查找字符串在另一字符串中最后一…

oracle 客户端_【数据库 常见术语1】 客户端,服务端

这个系列会介绍并回顾在学习和工作中常碰到的一些名词&#xff0c;以及它们的意思。客户端&#xff0c;服务端&#xff08;以Oracle数据库为例&#xff09;**************************************************************************************【我的理解】 打个比喻&…

matlab调用ansys需要安装mpi,Ansys 14中Fluent并行计算MPI全程详解

14版中的各mpi安装无需手动设置系统环境变量&#xff0c;此处以13版的intel mpi安装为例进行说明。NOTE: When the installation is complete, add %I_MPI_ROOT%em64tin or %I_MPI_ROOT%ia32in to your System PATH environment variable.If both HP-MPI and Intel-MPI are ins…

多个线程访问统一对象的不同方法_分析| 你未必真的了解线程安全,别骗自己,来看下怎么实现线程安全...

世界那么大&#xff0c;谢谢你来看我&#xff01;&#xff01;关注我你就是个网络、电脑、手机小达人什么是进程&#xff1f;电脑中时会有很多单独运行的程序&#xff0c;每个程序有一个独立的进程&#xff0c;而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑管…

php设置mysql查询编码,php连接mysql时怎么设置编码方式

php连接mysql时怎么设置编码方式php连接mysql数据库时&#xff0c;也就是在mysql_connect()语句之后添加“mysql_query("set names utf8");”语句来设置编码方式。注意&#xff1a;是utf8&#xff0c;不是utf-8&#xff1b;网页字符集也最好选用utf-8。在PHP连接数据…