热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mongodbmatch多条件_《MongoDB》

1.mongodb正则查询2.mongodb聚合查询3.mongodb管道操作4.mongodb字符串操作5.mongodb算术运算6.mongodb日期处理7.Java连击Mon

1. mongodb正则查询

2. mongodb聚合查询

3. mongodb管道操作

4. mongodb字符串操作

5. mongodb算术运算

6. mongodb日期处理

7. Java连击MongoDB数据库的方式


  1. Mongodb的正则查询?回忆之前的正则知识

i m g w ^ $都是什么意思?

i - 不区分大小写以匹配大小写的情况。

m - 多行查找,如果内容里面不存在换行符号(例如 n)或者条件上没有(start/end), 该选项没有任何效果

x - 设置 x 选项后,正则表达式中的非转义的空白字符将被忽略。需要$regex 与$options 语法

s - 允许点字符(即.)匹配包括换行符在内的所有字符。需要$regex 与$options 语法 i,m,x,s 可以组合使用。

g -全局(global)匹配

如果不带g,正则过程中字符串从左到右匹配,找到第一个符合条件的即匹配成功,返回,如果带g,则字符串从左到右,找到每个符合条件的都记录下来,知道字符串结尾位置

W -匹配字母或数字或下划线或汉字

^ -表示以...开头

$ -表示以...结尾

如何实现正则查询 语法规则是?

1 .db.集合名.find({key:/正则表达式/})

2 .db.集合名.find(key:{$regex:/正则表达式/})

  1. Mongodb的聚合操作。

如何实现聚合查询,通过_ aggregate()_____函数完成。

语法格式是:db.COLLECTION_NAME.aggregate([{$group:{_id:"$分组键名","$分组键名",.....,别名:{聚合 运算:"$运算列"}}},{条件筛选:{键名:{运算条件:运算值}}}])

$match $group $sort $sum $push $unwind分别代表什么意思。

e5ff0562a9f543928b0307f2c4747491.png

1.$sum: 求和

1.查询 dev 集合中的所有 size 键中的值的总和。

7ee144464d588a53f4e28bbf3179f72e.png

2.对每一个 title 进行分组并计算每组中的 size 的总和

9c2395e39ff54140ad44ba4563ea92aa.png

2.$match:条件筛选

1.where:

28fa0a3e0de66677c3f73a4a6d302c91.png

2.having:

eda9bc428661fb5ab1fd8c7e97277cac.png

3.$max:最大值

edddaa57f811665f19458b2e31eda111.png

4.$min:最小值

06c7711c2104b4da4dfce27fdc887f8f.png

5.$avg:求平均值

1676b033003a0839f2211ac1c9c7ba61.png

6.$push:查询 dev 集合,按照 size 分组并返回他们的 title,如果 size 相同则使用数组返回他们的 title

521ca00da6b077eb10bd4ff54286add1.png

7.$unwind:查询 dev 集合,将数组中的内容拆分显示。

cfb1fc8787656ed98372a83e309d1ff0.png

8.$project:使用$project 操作符做聚合投影操作。

1501ae32aad94e85179252900dcbcef1.png

9.$toLower:转换成小写/$toUpper:转换成大写

9ca6d9ec4c2756d77434694b6a35a965.png

10.$concat:字符串连接

4fe0c32c27b85db1e866097c978239ef.png

11.$substr:字符串截取:(中文:$substrCP/英文、数字:$substr)

41f3e3c987f09bb524ddccf93bfdbe8a.png

12.算数运算符:$add(+)

fe7b0a16731d240c2687424367ecf507.png
e1143043bb5f93ebe266af6f3cced839.png

13.算术运算符:$subtract(-)

8d1ad2d4149b0a656b0ee50d60485d17.png

14.算数运算符:$multiply(*)

8f14a04f4c5eaa4aec13c18775efecdc.png

15.算术运算符:$divide(/)

e7e44f2f5821e53fa547c1d5c7bd51b5.png

16.算术运算:$mod(%)

9aa7233fef55ee7eb4f8c25704aeb853.png
  1. 什么是管道操作。

管道在 Unix 和 Linux 中一般用于将当前命令的输出结果作为下一个命令的参数。 MongoDB 的聚合管道将 MongoDB 文档在一个管道处理完毕后将结果传递给下一个管 道处理。管道操作是可以重复的。

管道操作符是按照书写的顺序依次执行的,每个操作符都会接受一连串的文档,对这些 文档做一些类型转换,最后将转换后的文档作为结果传递给下一个操作符(对于最后一个管 道操作符,是将结果返回给客户端),称为流式工作方式。

管道操作符:$match、$group、$sort、$limit、$skip、$unwind 管道操作符,只能用于计算当前聚合管道的文档,不能处理其它的文档。

  1. 如何实现聚合投影约束,举例说明。

$match:条件筛选

1.where:

28fa0a3e0de66677c3f73a4a6d302c91.png

2.having:

eda9bc428661fb5ab1fd8c7e97277cac.png

3.$max:最大值

edddaa57f811665f19458b2e31eda111.png

4.$min:最小值

06c7711c2104b4da4dfce27fdc887f8f.png

5.$avg:求平均值

1676b033003a0839f2211ac1c9c7ba61.png
e1143043bb5f93ebe266af6f3cced839.png
  1. 字符串操作,回忆数据库中的字符串操作。

将内容变为大/小写

$project:使用$project 操作符做聚合投影操作。

1501ae32aad94e85179252900dcbcef1.png

$toLower:转换成小写/$toUpper:转换成大写

9ca6d9ec4c2756d77434694b6a35a965.png

截取汉字和截取非中文是否有区别?

截取非中文可以使用:$substr

截取中文要使用:$substrCP

  1. 算术运算符如何使用 语法结构是?

加法 乘法 除法 取模 分别怎么表示

算数运算符:$add(+)

fe7b0a16731d240c2687424367ecf507.png
e1143043bb5f93ebe266af6f3cced839.png

算术运算符:$subtract(-)

8d1ad2d4149b0a656b0ee50d60485d17.png

算数运算符:$multiply(*)

8f14a04f4c5eaa4aec13c18775efecdc.png

算术运算符:$divide(/)

e7e44f2f5821e53fa547c1d5c7bd51b5.png

算术运算:$mod(%)

9aa7233fef55ee7eb4f8c25704aeb853.png
  1. 日期处理

插入日期的方式有几种,分别是。

1.new Date()

6a85d59fc3e185d88cf357f87bb3eda4.png

2.ISODate()

e095e3f5619cc77b068c4facfb73bbff.png

查询日期的方式有几种,分别是。

1.使用new Date()

316372070a842c9b5226e34c6bbe873b.png

2.使用ISODate()

3d12dcc31ec02b327d0fe5c0be93739a.png

显示年月日如何写代码。

取年份:$year

取月份:$month

取日期:$dayOfMonth

5fdd91a47eaa8d51afc457f2c421817b.png

显示年月日时分秒如何操作。

$hour:取小时

$minute:取分钟

$millisecond:取秒

ecbc702177cab94b0cac156f8087315c.png

$dayOfWeek:星期日为 1,星期六为 7。

$week:全年的周计数从 0 开始。

$dayOfYear:全年中的第几天。

ae8b7611eb1db4f0ae0521536ebf3dea.png

自定义日期格式:

8ebea52918d2080f7cdf6f7f072f33d5.png
  1. java连接MongoDB数据的方式有哪些,分别是什么?

1.直连方式(不支持用户认证)

public class MongoDBUtil {private static MongoClient client;static {if(client==null){client=new MongoClient("192.168.2.131",27017);}}//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName);}//获取数据库中的集合public static MongoCollection getConnection(String dbName,String collName){return getDatabase(dbName).getCollection(collName);}
}

2.直连方式(使用用户认证)

public class MongoDBAuthUtil {private static MongoClient client;static {if(client==null){//创建封装认证用户信息的对象MongoCredential mongoCredential=MongoCredential.createCredential("itsxt","develop","123456".toCharArray());//封装MongoDB的地址与端口ServerAddress address=new ServerAddress("192.168.2.131",27017);client=new MongoClient(address, Arrays.asList(mongoCredential));}}//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName);}//获取数据库中的集合public static MongoCollection getConnection(String dbName, String collName){return getDatabase(dbName).getCollection(collName);}
}

3.连池方式(不使用用户认证)

public class MongoDBPoolUtil {private static MongoClient client;static {if(client==null){MongoClientOptions.Builder builder=new MongoClientOptions.Builder();builder.connectionsPerHost(10);//设置每个链接地址的最大链接数builder.connectTimeout(5000);//设置链接超时时间builder.socketTimeout(5000);//设置读写超时时间ServerAddress address=new ServerAddress("192.168.2.131",27017);client=new MongoClient(address,builder.build());}}//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName);}//获取数据库中的集合public static MongoCollection getConnection(String dbName, String collName){return getDatabase(dbName).getCollection(collName);}
}

4.池连方式(使用用户认证)

public class MongoDBAuthPoolUtil {private static MongoClient client;static {if(client==null){MongoClientOptions.Builder builder=new MongoClientOptions.Builder();builder.connectionsPerHost(10);//设置每个链接地址的最大链接数builder.connectTimeout(5000);//设置链接超时时间builder.socketTimeout(5000);//设置读写超时时间//创建封装认证用户信息的对象MongoCredential mongoCredential=MongoCredential.createCredential("itsxt","develop","123456".toCharArray());//封装MongoDB的地址与端口ServerAddress address=new ServerAddress("192.168.2.131",27017);client=new MongoClient(address, Arrays.asList(mongoCredential),builder.build());}}//获取数据库public static MongoDatabase getDatabase(String dbName){return client.getDatabase(dbName);}//获取数据库中的集合public static MongoCollection getConnection(String dbName, String collName){return getDatabase(dbName).getCollection(collName);}
}

  1. Java操作mongoDB集合

1.创建集合:

3fa64560d3d50ff6df2fc3ea5b0fa228.png

2.获取集合

99494a33b00d3fb19118890ab7234388.png

3.删除集合

69c989add0d8890972060a466cb99533.png



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
author-avatar
wjdd8888
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有