日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mongo 多语言模糊匹配

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongo 多语言模糊匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mongo 多語言模糊匹配

記一次mongo聚合查詢匹配時,需要模糊匹配多語言下的文本

mongo存儲數據結構如下:

{"_id": {"$oid": "61c2e92057ee825fb31c8448"},"created": {"$date": {"$numberLong": "1640163616884"}},"modified": {"$date": {"$numberLong": "1640163616884"}},"material_id": "m10034","uid": {"$numberLong": "992128"},"material_info": {"en-US": {"name": "size","introduction": "size"},"zh-CN": {"name": "中文","introduction": "簡介"}},"upload_time": {"$date": {"$numberLong": "1640163616000"}},"down_load_address": "","material_md5": "dsdscsdsad","file_size": 122,"cover_photo_address": "" }

查詢條件:模糊匹配 material_info下所有語言版本的 name的文本

思路如下:

1,利用 $objectToArray 把material_info 這個object 對象轉為 一個數組

2,利用 $unwind 把數組拆分一條條的數據

3,利用 $regex 模糊匹配 所有的數據中的 name的文本,找到符合的結果

查詢語句如下:

[ {"$project":{"lang":{"$objectToArray":"$material_info"}, "material_id":1 }},{"$unwind":"$lang"}, {"$match":{"lang.v.name":{"$regex":"44"} }} ]

來分析一下每一步的結果:

1,利用 $objectToArray 把material_info 這個object 對象轉為 一個數組,這一步主要是為了把object對象轉換為數組,執行結果如下:

2,利用 $unwind 把數組拆分一條條的數據,這一步是為了把 lang 這個數組拆開了成單一的對象,這樣就可以直接進行條件的匹配
3,利用 $regex 模糊匹配 所有的數據中的 name的文本,找到符合的結果,經過前面兩步后,現在管道里面的數據列表已經是一條條拆分好的數據,可以直接進行過濾即可

總結:主要是把復雜的object對象(類似于map),拆分成一個個獨立的對象列表(類似于把map轉成一個list),然后再把 list 拆解開來,最后進行條件過濾即可

參考如下:

mongo官方文檔:https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/

總結

以上是生活随笔為你收集整理的Mongo 多语言模糊匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。