簡體   English   中英

使用文本索引在聚合管道中填充的 Mongo 搜索

[英]Mongo search with populate in aggregation pipeline with text index

我有一個關於搜索實施的查詢。 這里的搜索實現或 atlas-search 最適合在單個集合中搜索。 我認為通常我們面臨一個場景,我們也需要使用填充或參考集合進行搜索。 我怎樣才能更好地實施呢?

考慮一個非常簡單的場景,我有 2 個collections

1產品(產品名稱字段的文本索引)

2用戶(用戶名字段上的文本索引可能是名字、姓氏等)

用戶創建產品,因此在產品集合中, createdBy上有用戶的 MongoID 參考。 在前端,有一個產品列表,所以我需要在單文本搜索中提供如下搜索條件

  1. 我可以用產品名稱搜索
  2. 我可以用產品所有者的名字搜索

使用 MongoAtlas 處理這種情況的最佳方法是什么? 前任。 我想要“Donni Bachhan”創建的所有產品。 您剛剛的聚合管道或最佳實踐是什么

我已經向 MongoDB 社區提出了問題,但沒有得到適當的幫助,請查看以下鏈接以獲取社區參考

https://developer.mongodb.com/community/forums/t/mongo-search-with-populate-in-aggregation-pipeline-with-text-index/6953

更好的是,我將其解釋為步驟

第 1 步:與用戶 collections 匹配:在那里您將獲得用戶詳細信息

第 2 步:查找產品 collections:這樣,您將獲得用戶創建的所有產品。

第 3 步:匹配搜索,如果需要任何搜索或過濾器將其與產品名稱匹配

示例:(希望這可以幫助你)

    async function search(userid, query = null)
    {
      return await userModel
        .aggregate()
        .match({
          _id: userid
        })
        .lookup({
          from: "products",
          localField: "_id",
          foreignField: "userid",
          as: "products"
        })
        .match({ $text: { $search: "cake" }  })
        .exec();
    }

暫無
暫無

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

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