簡體   English   中英

MongoDB可以聚合查詢其他文件嗎? 換句話說:在mongodb方面進行遞歸搜索,而不是客戶端

[英]Can MongoDB aggregation query other documents? In other words: recursive search in mongodb's side, not client's

在MongoDB聚合模式中,我們可以處理許多文檔,並通過排序,過濾,刪除和添加元素將它們聚合在新的數據結構中,以便生成要作為查詢檢索的新文檔。

例如,假設我需要在字典中找到單詞的含義。 如果我在字典中找到“馬”這個詞,我會得到類似的東西:“馬是動物”。 然后,我想知道動物是什么,所以我再次在字典中搜索“動物”的含義。

如果我要像python那樣去做,我必須找到'dog'的含義,等待它到達,然后閱讀它並提取動物這個詞。 然后我必須查詢'動物'的含義,等待它到達,依此類推......

有沒有辦法將這個遞歸任務完全委托給MongoDB,所以我不需要查詢並等待每個單詞? 我認為'aggregate'會解決,但它似乎只能將查詢中的文檔映射到新文檔,而不是查詢新文檔中的數據

Mongo數據庫聚合框架按步驟工作。 首先,您從集合中選擇數據,然后在所選數據集上應用“組”,“匹配”,“項目”,“排序等”。 基於在每個步驟上應用的操作來變換數據。 下一步僅從前一步獲取轉換后的數據。 您要問的是每個實例都需要完整的數據集,這意味着將查詢發送回數據庫,這不是這里的情況。

您可以使用聚合框架,當您可以從集合中選擇完整集或數據子集並通過在每個步驟中對其進行轉換來處理它。

自己有這個問題; 為找到它的人回答。

是的,使用MongoDB v3.2中的聚合可以進行遞歸搜索。

請參閱$lookup以及$graphLookup ,具體取決於您的用例。

還可以查看MongoDB Compass (任何正在運行的MongoDB實例的免費,可下載的GUI),它有一個甜蜜的聚合構建器,為每種類型的聚合提供模板,並根據您的收集數據進行實時調試 - 在聚合的每一步預覽結果。 💥要進入聚合構建器,請轉到您的收藏集,然后轉到聚合選項卡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM