[英]Mongo search with populate in aggregation pipeline with text index
我有一个关于搜索实施的查询。 这里的搜索实现或 atlas-search 最适合在单个集合中搜索。 我认为通常我们面临一个场景,我们也需要使用填充或参考集合进行搜索。 我怎样才能更好地实施呢?
考虑一个非常简单的场景,我有 2 个collections 。
1产品(产品名称字段的文本索引)
2用户(用户名字段上的文本索引可能是名字、姓氏等)
用户创建产品,因此在产品集合中, createdBy上有用户的 MongoID 参考。 在前端,有一个产品列表,所以我需要在单文本搜索中提供如下搜索条件
使用 MongoAtlas 处理这种情况的最佳方法是什么? 前任。 我想要“Donni Bachhan”创建的所有产品。 您刚刚的聚合管道或最佳实践是什么
我已经向 MongoDB 社区提出了问题,但没有得到适当的帮助,请查看以下链接以获取社区参考
更好的是,我将其解释为步骤
第 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.