mongo中模糊查詢?cè)趺从?創(chuàng)新互聯(lián)

這篇文章主要介紹了mongo中模糊查詢?cè)趺从茫哂幸欢ń梃b價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注重慶網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站定制方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及成都人造霧等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。

以下是一個(gè)mongo查詢的綜合應(yīng)用,即介紹一個(gè)生產(chǎn)中實(shí)際應(yīng)用的模糊查詢,當(dāng)然其實(shí)也很簡(jiǎn)單,主要用到mongo中的模糊查詢和$or查詢,以及并的關(guān)系,下面是一個(gè)mongo中的一條記錄

{ 
 "_id" : "ffe6a068-9043-4334-97d2-75387340e655", 
 "file_id" : "ffe6a068-9043-4334-97d2-75387340e655", 
 "name" : "中國(guó)正大", 
 "update_time" : NumberInt(1554975642), 
 "create_time" : NumberInt(1554975642), 
 "content" : "中國(guó)正大相關(guān)信息", 
 "file_url" : "", 
 "file_type" : "", 
 "user_ids" : [
 1.0, 
 10.0
 ], 
 "group_ids" : [

 ], 
 "is_common" : NumberInt(0), 
 "confidence" : -1.0, 
 "obj_id" : "", 
 "source" : "", 
 "content_time" : "", 
 "author" : "", 
 "summary" : "", 
 "info_type" : "00", 
 "sub_info_type" : "", 
 "title" : "", 
 "word_num" : NumberInt(8)
}

對(duì)上面一條記錄或者更多條記錄我們生產(chǎn)中的需求是:查詢出集合中(mongo中的集合即是mysql中的表),name或content中包含"正大"二字的記錄(關(guān)鍵詞即是用戶隨機(jī)輸入的,其實(shí)是一個(gè)變量),并且時(shí)間戳的值大于某一個(gè)開(kāi)始時(shí)間和某一個(gè)結(jié)束時(shí)間(這個(gè)也是用戶在前端進(jìn)行選擇,然后我們拿到前端的請(qǐng)求來(lái)進(jìn)行查詢的),并且文件的類型即info_type字段的值為"00",“00”代表的是word也是前端用戶選擇后我們獲取的條件之一,當(dāng)然還有其他條件想進(jìn)行嘗試可以自由發(fā)揮

下面就是使用mongo語(yǔ)句進(jìn)行實(shí)現(xiàn)的上面的需求:

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

對(duì)于查詢我們有的時(shí)候會(huì)選擇在程序中進(jìn)行,有的小伙伴會(huì)問(wèn)上面的mongo語(yǔ)句怎么在編程語(yǔ)言中進(jìn)行實(shí)現(xiàn),下面是用python語(yǔ)言中進(jìn)行實(shí)現(xiàn)的,我們會(huì)引用python中操作mongo的一個(gè)模塊即pymongo模塊可以使用pip install pymongo在控制臺(tái)或cmd中進(jìn)行一鍵安裝,至于如何使用也很簡(jiǎn)單,可以自行百度或者訪問(wèn)我的另一篇博客:pymono的簡(jiǎn)單使用,下面附上用python代碼實(shí)現(xiàn)上面需求的業(yè)務(wù)代碼:

import pymongo
import re
# 創(chuàng)建數(shù)據(jù)庫(kù)連接
client = pymongo.MongoClient(host='127.0.0.1', port=8014) #填寫(xiě)自己本機(jī)數(shù)據(jù)庫(kù)的ip和port或者遠(yuǎn)程服務(wù)器數(shù)據(jù)庫(kù)的ip和port
# 指定數(shù)據(jù)庫(kù)db1,沒(méi)有則創(chuàng)建數(shù)據(jù)庫(kù)db1
db = client.dataretrieve
#指定數(shù)據(jù)庫(kù)中指定的表
collection=db.subscribe_test

"""1、對(duì)表中的數(shù)據(jù)進(jìn)行查詢"""
"""
db.collection.find(query, projection)
query :可選,使用查詢操作符指定查詢條件
projection :可選,使用投影操作符指定返回的鍵。查詢時(shí)返回文檔中所有鍵值, 只需省略該參數(shù)即可(默認(rèn)省略)。
"""
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"])

下面是生產(chǎn)中實(shí)際的開(kāi)發(fā)代碼,只供參考,只是把上面的一些常量,換成了從前端請(qǐng)求的數(shù)據(jù):

def person_handler(req_params, page_size, search_offset):
 """
 去mongo中查詢個(gè)人數(shù)據(jù)
 :param req_params:
 :param page_size:
 :param search_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 'end_time' in req_params and req_params['end_time']:
 end_time = int(req_params["end_time"])
 update_time['$lte'] = end_time
 if update_time:
 query["update_time"] = update_time
 if 'file_type' in req_params and req_params['file_type']:
 query["file_type"] = req_params["file_type"]
 if 'user_ids' in req_params and req_params['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 in result:
 results.append(row)
 additions = {"word_segs": req_params["search_keywords"], "remind": 0}
 print("查詢結(jié)果", results)
 return results, additions, count

如果有小伙伴說(shuō)我用的不是python語(yǔ)言譬如java用代碼怎么實(shí)現(xiàn)呢?那么如果你會(huì)寫(xiě)mysql來(lái)實(shí)現(xiàn)上面的需求的話本博主可以推薦你使用mongo的一款可視化工具Studio 3T來(lái)將mysql語(yǔ)句轉(zhuǎn)換成mongo語(yǔ)句,python語(yǔ)句,java語(yǔ)句等

mongo中模糊查詢?cè)趺从?></p><p>mysql語(yǔ)句也類似mongo語(yǔ)句有一個(gè)控制臺(tái)可以來(lái)進(jìn)行書(shū)寫(xiě)mysql語(yǔ)句,然后進(jìn)行查詢之后將結(jié)果進(jìn)行轉(zhuǎn)換</p><p><img src=成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:mongo中模糊查詢?cè)趺从?創(chuàng)新互聯(lián)
URL地址:http://muchs.cn/article18/eeegp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、全網(wǎng)營(yíng)銷推廣網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)