如何在mongo中使用模糊查询

分类:编程技术 时间:2024-02-20 15:30 浏览:0 评论:0
0
本文主要介绍如何在mongo中使用模糊查询,具有一定的参考价值。有兴趣的朋友可以参考一下。希望您读完这篇文章后能有所收获。让小编带你来了解一下吧。

下面是mongo query的综合应用,是对生产中实际应用的模糊查询的介绍。当然,它也很简单。主要使用mongo中的模糊查询和$or查询,以及并集关系。 ,以下是mongo中的一条记录

{ "_id" : "ffe6a068-9043-4334-97d2-75387340e655", "file_id" : "ffe6a068-9043- 4334 -97d2-75387340e655","name":"中国正大","Update_time":Numberint(1554975642),"Create_time":Numberint(1554975642),"内容":"中国正大相关信息","File_uu"rl": " ", "file_type" : "", "user_ids" : [ 1.0, 10.0 ], "group_ids" : [ ], "is_common" : NumberInt(0), "confidence": -1.0, "obj_id" : "", “来源”:“”,“内容时间”:“”,“作者”:“”,“摘要”:“”,“info_type”:“00”,“sub_info_type”:“”,“标题”:“”,“word_num”:NumberInt(8)}< /pre>

对于以上记录或者更多条记录,我们在生产中的需求是查询集合(在mongo中集合就是mysql中的表),名称或者内容中包含“正大”这个词(关键字是随机的)由用户输入,实际上是一个变量),并且时间戳值大于某个开始时间和某个结束时间(这个也是用户在前端选择的,然后我们从前端查询),文件类型,即info_type字段的值为“00”。 “00”代表单词,也是由前端用户选择的。终于,我们得到了条件之一。当然,还有其他条件,大家想尝试的话,可以自由使用

下面是使用mongo语句实现的上述需求:

db.getCollection("subscribe_test").find({$or:[{"name":{"$regex":"正大"}},{"content":{"$regex":"正大"}}],"update_time":{$gte: 1,$lte:2000000000},info_type:"00"})

对于查询,我们有时会选择使用程序有些朋友会问上面的mongo语句如何用编程语言来实现。下面是用python语言实现的。我们将提到python中操作mongo的一个模块,即pymongo模块。您可以使用 pip install pymongo 在控制台或cmd中进行一键安装。至于如何使用,也很简单。大家可以百度或者访问我的另一篇博客:pymono的简单使用。下面附上实现上述要求的python代码。业务代码:

import pymongoimport re# 创建数据库连接 client = pymongo.MongoClient(host='127.0.0.1', port=8014) #填写自己本地数据库ip和端口或者远程服务器数据库的ip和端口#指定数据库db1,如果没有则创建数据库db1db =client.dataretrieve#指定数据库中指定的表collection=db.subscribe_test"""1.查询表中的数据""""""db.collection.find(query,projection)query:可选,使用查询运算符指定查询条件projection:可选,使用投影运算符指定返回的key,查询时要返回文档中的所有key值,省略该参数即可(默认省略)。 """query = {} query["$or"] = [ {"name": re.compile("正大")}, {"content":re.compile("正大")},]query["file_type"] = "00" query["update_time"] = {"$gte": 0,"$lte": 2000000000}row=collection.find(filter =query)for r in row: print(r["content"])

以下是实际生产中的开发代码。仅供参考。它只是用前端的请求替换了上面的一些常量。 data:

def person_handler(req_params, page_size, search_offset): """ 在mongo中查询个人数据 :param req_params: :param page_size: :paramsearch_offset: : return: """ results = [] query = {} update_time = {} if 'start_time' in req_params and req_params["start_time"]: start_time = int(req_params["start_time"]) update_time['$gte '] = start_time if req_params 和 req_params['end_time'] 中的 'end_time': end_time = int(req_params["end_time"]) update_time['$lte'] = end_time if update_time: query["update_time"] = update_time if req_params 和 req_params['file_type' ] 中的 'file_type':query["file_type"] = req_params["file_type"] 如果 req_params 和 req_params['user_ids'] 中的 'user_ids':query['user_ids'] = int(req_params ['user_id']) serch_keywords = req_params[" search_keywords"] query["$or"] = [ {"name": re.compile(serch_keywords)}, {"content": re.compile(serch_keywords)}, ] print(query) result = person_mongodao.search(filter =query).skip(search_offset).limit(page_size) count = person_mongodao.search(filter=query).skip(search_offset).limit(page_size).count() for row结果: results.append(row)additions = {"word_segs": req_params["search_keywords"], "remind": 0} print("查询结果", results) 返回结果、添加、计数

如果有朋友说我不是用python语言,比如说,我该怎么办使用java代码来实现吗?那么如果你能写mysql来实现上述需求,本博主可以推荐你使用mongo的可视化工具Studio 3T,将mysql语句转换为mongo语句、python语句、java语句等.

Mysql语句也和mongo语句类似,有一个控制台可以写mysql语句,查询完之后再转换结果

感谢您仔细阅读本文,希望小编分享的《如何在mongo中使用模糊查询》这篇文章对大家有所帮助,也希望大家多多支持和支持关注行业资讯频道,更多相关知识等着您,快来学习吧!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在mongo中使用模糊查询

用户评论