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

配列に一致するものが見つからない場合は、最初の要素を返します

    以下の集計を試すことができます

    基本的に、 $ filterを実行する必要があります。 製品 配列して、 $ cond> 要素が含まれていないか、 []に等しい場合は 次に、 $ slave を実行する必要があります productsの最初の要素 配列。

    db.collection.aggregate([
      { "$addFields": {
        "products": {
          "$cond": [
            {
              "$eq": [
                { "$filter": {
                  "input": "$products",
                  "cond": { "$eq": ["$$this.product_id", 2] }
                }},
                []
              ]
            },
            { "$slice": ["$products", 1] },
            { "$filter": {
              "input": "$products",
              "cond": { "$eq": ["$$this.product_id", 2] }
            }}
          ]
        }
      }}
    ])
    

    または、 $ letを使用することもできます 集約

    db.collection.aggregate([
      { "$addFields": {
        "products": {
          "$let": {
            "vars": {
              "filt": {
                "$filter": {
                  "input": "$products",
                  "cond": { "$eq": ["$$this.product_id", 2] }
                }
              }
            },
            "in": {
              "$cond": [
                { "$eq": ["$$filt", []] },
                { "$slice": ["$products", 1] },
                "$$filt"
              ]
            }
          }
        }
      }}
    ])
    


    1. 配列ソースを使用してmongodbの配列サブセットを取得します

    2. MongoDBとGolangを使用したルックアップの参照で値を取得します

    3. mongoDBのすべてのサブジェクトのマークを集約する方法

    4. マングースの日付を時間なしで比較し、複数のプロパティでグループ化しますか?