mongodb 具有两个不同结果的相同聚合物

k4ymrczo  于 2023-01-25  发布在  Go
关注(0)|答案(1)|浏览(143)

我是mongo的新手,尝试返回聚合的结果。

joinById: (collection, id, $lookup, res) => {

    var $match = {"_id": ObjectId(id) };

    MongoClient.connect(url, function (err, db) {
        if (err) throw err;
        var dbo = db.db("myDB");
        dbo.collection(collection)
            .aggregate([{ $match }, { $lookup }])
            .toArray(function (err, result) {
                if (err) throw err;
                const jsonable = stringify(result);
                res.status(200).json(jsonable)
                db.close();
            });
    });

}

我在第一步就做好了,但是我需要做一些修改,因为我不知道如何将结果返回给调用函数。
所以我做了这个改变:

joinById2: async (collection, id, $lookup) => {

    const $match = {"_id": ObjectId(id) };

    const client = await MongoClient.connect(url);
    const table = client.db("myDB");
    const collect = table.collection(collection);
    const aggregate = collect.aggregate([{ $match }, { $lookup }]);
    const result = aggregate.toArray()

    return stringify(result);

},

现在我可以返回值,但是...聚合没有给予任何结果。
我更喜欢第二种方式来写它,并且已经改变了其他功能的工作。所以我想知道:为什么我不能得到同样的结果?我该如何解决这个问题?

e4yzc0pl

e4yzc0pl1#

我刚刚错过了承诺。

const result = await aggregate.toArray()

等待它的工作!

相关问题