sql >> データベース >  >> NoSQL >> MongoDB

mongodb集計で文字列の配列を返す方法

    .aggregate() メソッドは常にObjectsを返します 何をしても、それを変えることはできません。

    あなたの目的のためには、おそらく.distinct()を使用する方が良いでしょう。 代わりに、個別の値の配列を返すだけです:

    db.users.distinct("emails.address");
    

    まさにあなたの望む出力です:

    ["[email protected]","[email protected]","[email protected]"]
    

    本当に.aggregate()を使用したい場合 次に、値だけへの変換は、後処理で式の「外側」で行われる必要があります。また、$unwindも使用する必要があります このような配列を扱う場合。

    これはJavaScriptの.map()で実行できます 例:

    db.users.aggregate([
        { "$unwind": "$emails" },
        { "$group": { "_id": "$emails.address" } }
    ]).map(function(el) { return el._id })
    

    これは同じ出力を提供しますが、.map() サーバーではなくクライアント側で変換を行います。



    1. LogicException:PHPRedis拡張機能がインストールされ有効になっていることを確認してください

    2. REDISのクラスター有効オプションでYCSBロードを開始するには

    3. Mongoose、Express、NodeJSでモデルを更新

    4. マングース:深い個体群(個体群の多いフィールドに生息する)