3

私が取り組んでいるドキュメントの例を次に示します。

{
            "_id" : ObjectId("5b35019563726438989381d3"),
            "ref" : "123",
            "nom" : "pc",
            "Revendeurs" : [
                    {
                            "revendeur" : "Tdiscount",
                            "selecteur_prix" : ".price",
                            "hist_prix" : [
                                    {
                                            "date" : ISODate("2018-06-28T00:00:00Z"),
                                            "prix" : 200
                                    },
                                    {
                                            "date" : ISODate("2018-06-27T00:00:00Z"),
                                            "prix" : 100.8}
                            ]
                    }
            ]
    }

「賞」フィールドの最大値を照会したい。「revendeur」ごとにすべての「prix」をリストする必要もありますが、Mongodb は空の結果しか返しません。

このクエリを実行する場合:

db.Tunicompare.aggregate([
    { $unwind: '$Revendeurs' }, 
    { $group: { _id: null, max: { $max: '$Revendeurs.hist_prix.prix' } } },
    { $project: { max: 1, _id:0 } }
])

この結果が得られます (最大で 200 しか得られないのではなく)

{ "max" : [ 200, 100.8 ] }
4

2 に答える 2

1

外側リストと内側リストの両方で最大値を見つけたい場合は、次のようにします(グローバル最大値):

db.Tunicompare.aggregate([
    { $unwind: '$Revendeurs' }, 
    { $unwind: '$Revendeurs.hist_prix' },
    { $group: { _id: null, max: { $max: '$Revendeurs.hist_prix.prix' } } },
    { $project: { max: 1, _id:0 } }
])

出力

/* 1 */
{
    "max" : 200.0
}
于 2018-06-29T11:59:31.880 に答える