濮阳杆衣贸易有限公司

主頁 > 知識庫 > mongo中模糊查詢的綜合應用

mongo中模糊查詢的綜合應用

熱門標簽:濟南電銷機器人加盟公司 廣州長安公司怎樣申請400電話 電銷機器人是什么軟件 呼和浩特電銷外呼系統(tǒng)加盟 怎么投訴地圖標注 老虎洗衣店地圖標注 杭州人工電銷機器人價格 蘋果汽車租賃店地圖標注 云南外呼系統(tǒng)

前言

以下是一個mongo查詢的綜合應用,即介紹一個生產中實際應用的模糊查詢,當然其實也很簡單,主要用到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), 
 "content" : "中國正大相關信息", 
 "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)
}

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

下面就是使用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代碼實現上面需求的業(yè)務代碼:

import pymongo
import re
# 創(chuàng)建數據庫連接
client = pymongo.MongoClient(host='127.0.0.1', port=8014) #填寫自己本機數據庫的ip和port或者遠程服務器數據庫的ip和port
# 指定數據庫db1,沒有則創(chuàng)建數據庫db1
db = client.dataretrieve
#指定數據庫中指定的表
collection=db.subscribe_test

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

下面是生產中實際的開發(fā)代碼,只供參考,只是把上面的一些常量,換成了從前端請求的數據:

def person_handler(req_params, page_size, search_offset):
 """
 去mongo中查詢個人數據
 :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("查詢結果", results)
 return results, additions, count

如果有小伙伴說我用的不是python語言譬如java用代碼怎么實現呢?那么如果你會寫mysql來實現上面的需求的話本博主可以推薦你使用mongo的一款可視化工具Studio 3T來將mysql語句轉換成mongo語句,python語句,java語句等

mysql語句也類似mongo語句有一個控制臺可以來進行書寫mysql語句,然后進行查詢之后將結果進行轉換

總結

以上就是關于mongo模糊查詢的簡單使用,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Java操作MongoDB模糊查詢和分頁查詢
  • Java操作mongodb的模糊查詢和精確查詢
  • 在php7中MongoDB實現模糊查詢的方法詳解
  • Node.js對MongoDB數據庫實現模糊查詢的方法
  • Python操作mongodb數據庫進行模糊查詢操作示例
  • Java操作MongoDB插入數據進行模糊查詢與in查詢功能
  • Golang Mongodb模糊查詢的使用示例

標簽:興安盟 廈門 玉林 遼陽 自貢 泰安 雞西 無錫

巨人網絡通訊聲明:本文標題《mongo中模糊查詢的綜合應用》,本文關鍵詞  mongo,中,模糊,查詢,的,綜合,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mongo中模糊查詢的綜合應用》相關的同類信息!
  • 本頁收集關于mongo中模糊查詢的綜合應用的相關信息資訊供網民參考!
  • 推薦文章
    胶州市| 榆林市| 大港区| 吴江市| 保德县| 宁蒗| 洛南县| 凤山县| 柳江县| 克拉玛依市| 汽车| 浮梁县| 土默特右旗| 潞西市| 泊头市| 神农架林区| 宝坻区| 云霄县| 佛山市| 阜新市| 清丰县| 称多县| 南投市| 贡山| 富川| 澜沧| 金秀| 永登县| 西昌市| 浦县| 嫩江县| 兰坪| 仁寿县| 沧州市| 小金县| 青海省| 云和县| 定结县| 晋州市| 曲沃县| 濮阳县|