gpt4 book ai didi

node.js - 如何使用 mongoose 查找并合并多个集合

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:32 25 4
gpt4 key购买 nike

我有一个包含多种产品类型的电子商务项目,在查询产品搜索时遇到一些问题。

我的数据库上的集合如下:- 产品_工艺- 产品_时尚- 产品_旅行- 产品食品

目前我尝试 .find() 每个集合并将其合并。

我现有的代码

const searchString = 'some product'

const final result = []

const resultOne = await ModelOne.find({ title: searchString })
const resultTwo = await ModelTow.find({ title: searchString })
const resultThree = await ModelThree.find({ title: searchString })

result.push(resultOne)
result.push(resultTwo)

解决这个问题的有效、快速且最佳的方法是什么?

最佳答案

这是最快的 Mongo 相关方式,请确保该字段已建立索引。

我也会使用类似 bluebird 的东西同时运行所有 3 个搜索,这将为您节省大量时间。

它看起来像这样:

let Promise = require("bluebird");
const searchString = 'some product'

const final result = []
let results = Promise.all([ModelOne.find({ title: searchString }),
ModelTow.find({ title: searchString }),
ModelThree.find({ title: searchString })]);
return results.flat();

如果您继续使用代码 result.push(resultOne) 不会连接数组,而是实际上将数组作为一个整体推送,不确定您的意思是这种行为。

另请注意,如果您最终使用了 bluebird,则需要确保您的 mongo/mongoose promise 是 bluebird promise 。根据您使用的内容,您应该进一步阅读如何操作。

对于 Mongoose ,我在导入后添加 mongoose.Promise = Promise;

关于node.js - 如何使用 mongoose 查找并合并多个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55899483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com