最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mongo中模糊查詢的綜合應(yīng)用

 更新時間:2019年04月13日 09:47:03   作者:迎風(fēng)而來  
這篇文章主要給大家介紹了關(guān)于mongo中模糊查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

{ 
 "_id" : "ffe6a068-9043-4334-97d2-75387340e655", 
 "file_id" : "ffe6a068-9043-4334-97d2-75387340e655", 
 "name" : "中國正大", 
 "update_time" : NumberInt(1554975642), 
 "create_time" : NumberInt(1554975642), 
 "content" : "中國正大相關(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)
}

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

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

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

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

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

"""1、對表中的數(shù)據(jù)進(jìn)行查詢"""
"""
db.collection.find(query, projection)
query :可選,使用查詢操作符指定查詢條件
projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數(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í)際的開發(fā)代碼,只供參考,只是把上面的一些常量,換成了從前端請求的數(shù)據(jù):

def person_handler(req_params, page_size, search_offset):
 """
 去mongo中查詢個人數(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

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

mysql語句也類似mongo語句有一個控制臺可以來進(jìn)行書寫mysql語句,然后進(jìn)行查詢之后將結(jié)果進(jìn)行轉(zhuǎn)換

總結(jié)

以上就是關(guān)于mongo模糊查詢的簡單使用,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Mongodb數(shù)據(jù)庫兩種啟動方法小結(jié)

    Mongodb數(shù)據(jù)庫兩種啟動方法小結(jié)

    MongoDB是一種開源的服務(wù)器端NoSQL數(shù)據(jù)庫管理系統(tǒng),它提供了一種靈活的框架,可以快速地存儲、處理和管理大量的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Mongodb數(shù)據(jù)庫兩種啟動方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • MongoDB學(xué)習(xí)筆記之GridFS使用介紹

    MongoDB學(xué)習(xí)筆記之GridFS使用介紹

    這篇文章主要介紹了MongoDB學(xué)習(xí)筆記之GridFS使用介紹,本文介紹了GridFS的作用、GridFS的一些使用方法、GridFS實(shí)現(xiàn)原理及注意事項(xiàng)等,需要的朋友可以參考下
    2015-07-07
  • 如何通過MongoDB?Atlas?實(shí)現(xiàn)語義搜索與?RAG(邁向AI的搜索機(jī)制)

    如何通過MongoDB?Atlas?實(shí)現(xiàn)語義搜索與?RAG(邁向AI的搜索機(jī)制)

    MongoDBAtlas的語義搜索功能通過向量化存儲和檢索非結(jié)構(gòu)化數(shù)據(jù),結(jié)合RAG框架,實(shí)現(xiàn)了高效的知識檢索和增強(qiáng)型生成應(yīng)用,本文給大家介紹如何通過MongoDB?Atlas?實(shí)現(xiàn)語義搜索與?RAG(邁向AI的搜索機(jī)制),感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • MongoDB數(shù)據(jù)更新方法干貨篇

    MongoDB數(shù)據(jù)更新方法干貨篇

    之前給大家分享了MongoDB中數(shù)據(jù)查詢的相關(guān)方法和技巧,那么下面這篇文章主要給大家介紹了MongoDB中數(shù)據(jù)更新方法的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • 在mac系統(tǒng)下安裝與配置mongoDB數(shù)據(jù)庫

    在mac系統(tǒng)下安裝與配置mongoDB數(shù)據(jù)庫

    這篇文章主要介紹了在mac系統(tǒng)下安裝與配置mongoDB數(shù)據(jù)庫的操作步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-09-09
  • MongoDB賬戶密碼設(shè)置的方法詳解

    MongoDB賬戶密碼設(shè)置的方法詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB賬戶密碼設(shè)置的相關(guān)資料,我們知道m(xù)ysql在安裝的時候需要我們設(shè)置一個數(shù)據(jù)庫默認(rèn)的用戶名和密碼,mongodb也不例外,需要的朋友可以參考下
    2023-09-09
  • MongoDB orm框架的注意事項(xiàng)及簡單使用

    MongoDB orm框架的注意事項(xiàng)及簡單使用

    MongoDB官方提供的orm的輕量級封裝的 zfoo orm 框架,只對官方提供的進(jìn)行了簡單的封裝,還做了一些官方不支持的語法校驗(yàn)。本文介紹了該框架的注意事項(xiàng)及簡單使用
    2021-06-06
  • Mongodb使用$<identifier>過濾更新數(shù)組元素的示例代碼

    Mongodb使用$<identifier>過濾更新數(shù)組元素的示例代碼

    帶有過濾器的位置操作符$<identifier>定義數(shù)組中數(shù)據(jù)更新時,只符合identifier定義條件的元素才可以更新,本文給大家介紹了Mongodb使用$<identifier>過濾更新數(shù)組元素的操作方法,很值得探討和學(xué)習(xí),需要的朋友可以參考下
    2024-06-06
  • MongoDB按時間分組操作實(shí)戰(zhàn)

    MongoDB按時間分組操作實(shí)戰(zhàn)

    MongoDB支持使用聚合操作來統(tǒng)計(jì)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MongoDB按時間分組操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MongoDB中aggregate()方法實(shí)例詳解

    MongoDB中aggregate()方法實(shí)例詳解

    MongoDB中聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計(jì)平均值,求和等),并返回計(jì)算后的數(shù)據(jù)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于MongoDB中aggregate()方法的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評論

基隆市| 云龙县| 西吉县| 铜陵市| 遂溪县| 湘潭市| 连城县| 濮阳县| 南澳县| 罗田县| 盐城市| 抚顺县| 岗巴县| 威信县| 乐安县| 巍山| 阿克| 孟州市| 西丰县| 满城县| 东安县| 灵寿县| 民县| 奇台县| 米泉市| 宁津县| 宝鸡市| 南靖县| 高雄市| 凌海市| 诸城市| 临高县| 中西区| 中牟县| 汨罗市| 门源| 浙江省| 新和县| 客服| 天全县| 青铜峡市|