0

私は次の機能を持っています:

exports = function () {
    const bases = ["02930919000100", "31599354000128", "31588482000176"];

    const promises = bases.map(async (value, index) => {
        const mongo = context.services.get("mongodb-atlas").db(value);
        return mongo.collection("vendas").aggregate([
            {
                $match: {
                    data: {
                        $gte: "2021-10-01",
                        $lte: "2021-10-29",
                    }
                }

            }
        ]); //Look at this line
    })

    return Promise.all(promises);
};

あなたの返品は空です:

[{},{},{}]

しかし、コードでコメントした行に「.toArray()」を配置すると、戻り値が機能します。

exports = function () {
    const bases = ["02930919000100", "31599354000128", "31588482000176"];

    const promises = bases.map(async (value, index) => {
        const mongo = context.services.get("mongodb-atlas").db(value);
        return mongo.collection("vendas").aggregate([
            {
                $match: {
                    data: {
                        $gte: "2021-10-01",
                        $lte: "2021-10-29",
                    }
                }

            }
        ]).toArray(); //Look at this line
    })

    return Promise.all(promises);
};

「.toArray()」を置くだけで動作し、戻り値は次のとおりです。

[[{"_id":{"$oid":“615b4b15bbe1278ebc65d8cf”},“id_vendas”:{"$numberInt":“77588”}}],[{"_id":{"$oid":“615b7676bbe1278ebc6fe62e” },“id_vendas”:{"$numberInt":“127454”}}],[{"_id":{"$oid":“615b2105bbe1278ebc5af4be”},“id_vendas”:{"$numberInt":“61102”} }]]

なんで?ドキュメントによると、集計の戻り値はクエリ ドキュメント ( https://docs.mongodb.com/realm/mongodb/actions/collection.aggregate/ ) ですが、「toArray()」を使用する必要がある理由がわかりません。この場合。

4

0 に答える 0