マングースの2つの異なるフィールドに一致しますか?

グンジャンパテル

同じドキュメント内の2つの異なるフィールドを一致させようとしています。しかし、期待どおりの出力が得られませんでした。例を挙げて説明します。

同じドキュメントで一致させたいのですが、一致weighted.phaseIdphases._idないものはphasesフィールドから削除する必要があります。

誰かアイデアがありますか?

//データベースに対する集計クエリを処理した後に文書化します。

{
    "_id" : ObjectId("5a680c803096130f93d11c7a"),
    "weighted" : [ 
        {
            "phaseId" : ObjectId("5a6734c32414e15d0c2920f0"),
            "_id" : ObjectId("5a680c803096130f93d11c7b")
        },
        {
            "phaseId" : ObjectId("5a6734c32414e15d0c2920ee"),
            "_id" : ObjectId("5a680c803096130f93d11c7c")
        }
    ],
    "phases" : [ 
        {
            "phase_name" : "Phase 1",
            "_id" : ObjectId("5a6734c32414e15d0c2920f0")
        }, 
        {
            "phase_name" : "Phase 2",
            "_id" : ObjectId("5a6734c32414e15d0c2920ef")
        }, 
        {
            "phase_name" : "Phase 3",
            "_id" : ObjectId("5a6734c32414e15d0c2920ee")
        }, 
        {
            "phase_name" : "Phase 4",
            "_id" : ObjectId("5a6734c32414e15d0c2920ed")
        }
    ]
}

//期待される出力

{
    "_id" : ObjectId("5a680c803096130f93d11c7a"),
    "weighted" : [ 
        {
            "phaseId" : ObjectId("5a6734c32414e15d0c2920f0"),
            "_id" : ObjectId("5a680c803096130f93d11c7b")
        },
        {
            "phaseId" : ObjectId("5a6734c32414e15d0c2920ee"),
            "_id" : ObjectId("5a680c803096130f93d11c7c")
        }
    ],
    "phases" : [ 
        {
            "phase_name" : "Phase 1",
            "_id" : ObjectId("5a6734c32414e15d0c2920f0")
        },
        {
            "phase_name" : "Phase 3",
            "_id" : ObjectId("5a6734c32414e15d0c2920ee")
        }
    ]
}
mickl

次の集計を使用できます。

db.col.aggregate([
    {
        $addFields: {
            weightedIds: {
              $map:
                 {
                   input: "$weighted",
                   as: "w",
                   in: "$$w.phaseId"
                 }
            }
        }
    },
    {
      $project: {
        _id: 1,
        weighted: 1,
        phases: {
            $filter: {
             input: "$phases",
             as: "phase",
             cond: { $gte: [ { $indexOfArray: [ "$weightedIds" , "$$phase._id" ] }, 0 ] }
            }
        }
      }
    }
])

フィールド$mapのみを取得するために使用しており、対応するフェーズが存在するかどうかをチェックする$ filterを使用フィルターで除外できますそれ以外の場合は-1を返す$ indexOfArray使用phaseIdweightedphasesid

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

MongoDBは、2つの異なるフィールドが同じ場合にのみ$ inと一致します

分類Dev

マングースFindOne-条件に一致するフィールドのみを返します

分類Dev

異なるファイルの2つのフィールドを比較し、順序に関係なく一致するもののみを返します

分類Dev

値のリストに一致する2つの異なるフィールドに基づいてセルに入力するVBAマクロ

分類Dev

2つのフィールド/列に一致する2つの配列をフィルタリングして結合します:Javascript

分類Dev

2つの異なるフィールドで一致を使用して集計するにはどうすればよいですか?

分類Dev

PostgreSQLでフィールド間のすべての値が一致しない場合は、2つのテーブルにリンクしますか?

分類Dev

多数のレコードをクエリして、1つのフィールドが異なるが、他の2つのフィールドが一致するパターンを見つける(逆にした場合でも)

分類Dev

フィールドが一致する2つのテーブルからHiveを選択しますか?

分類Dev

2つのリストからフィルタリングし、java8を使用して一致するレコードを取得する

分類Dev

elasticsearchは2つのフィールドに一致します

分類Dev

mongodb集計は2つのフィールドに一致します

分類Dev

バインディングMetadataExchangeTcpBindingセルフホスティングを持つエンドポイントのスキームnet.tcpに一致するベースアドレスが見つかりませんでした

分類Dev

SEDまたはAWKを使用して、xmlファイル内の2つの異なるパターンに一致する2行を複製します

分類Dev

CLOBフィールドにSHA-256ハッシュの明示的な列を追加すると、そのCLOBフィールドでの検索(完全一致)のパフォーマンスが向上しますか?

分類Dev

2つの異なる一致フィールドからのAwk合計列

分類Dev

2つのデータフレームをマージして、長さが異なる日付(異なる見出し)に一致させます

分類Dev

Mongodbは、2つのフィールドを一致するフィールドと比較します。

分類Dev

いくつかの正確なフィールドに一致するElasticsearch動的テンプレート

分類Dev

Elasticsearchは2つのフィールドのコンボに一致します

分類Dev

マングースのサブドキュメント配列をフィルタリングし、一致する要素のみを返します

分類Dev

4つのテーブルのうち任意の2つのテーブルのフィールドに一致するレコードを取得します

分類Dev

WEBAPIルーティングエラー異なるAPIパスを持つリクエストに一致する複数のアクションが見つかりました

分類Dev

2つの異なるファイルの2つの列のペアを比較し、一致を水平方向にマージして印刷するにはどうすればよいですか(BASHまたはAWKの優先)?

分類Dev

VIM-グローバルコマンドを使用して2つの異なる条件でフィルタリングできますか?

分類Dev

ファイルリストコマンドlsの多くのパターンに一致しますか?

分類Dev

2つのフィールドが一致しない場合は、データベーステーブルに新しい行を挿入します。一致しない場合は、特定の列の値を合計します。

分類Dev

Mongodbは、マングースの2つの異なるコレクションから一致するすべてのレコードをフェッチする方法

分類Dev

データ属性を使用してフィルタリングする場合、JSで、同じ単語で順序が異なる2つの配列を一致させるにはどうすればよいですか?

Related 関連記事

  1. 1

    MongoDBは、2つの異なるフィールドが同じ場合にのみ$ inと一致します

  2. 2

    マングースFindOne-条件に一致するフィールドのみを返します

  3. 3

    異なるファイルの2つのフィールドを比較し、順序に関係なく一致するもののみを返します

  4. 4

    値のリストに一致する2つの異なるフィールドに基づいてセルに入力するVBAマクロ

  5. 5

    2つのフィールド/列に一致する2つの配列をフィルタリングして結合します:Javascript

  6. 6

    2つの異なるフィールドで一致を使用して集計するにはどうすればよいですか?

  7. 7

    PostgreSQLでフィールド間のすべての値が一致しない場合は、2つのテーブルにリンクしますか?

  8. 8

    多数のレコードをクエリして、1つのフィールドが異なるが、他の2つのフィールドが一致するパターンを見つける(逆にした場合でも)

  9. 9

    フィールドが一致する2つのテーブルからHiveを選択しますか?

  10. 10

    2つのリストからフィルタリングし、java8を使用して一致するレコードを取得する

  11. 11

    elasticsearchは2つのフィールドに一致します

  12. 12

    mongodb集計は2つのフィールドに一致します

  13. 13

    バインディングMetadataExchangeTcpBindingセルフホスティングを持つエンドポイントのスキームnet.tcpに一致するベースアドレスが見つかりませんでした

  14. 14

    SEDまたはAWKを使用して、xmlファイル内の2つの異なるパターンに一致する2行を複製します

  15. 15

    CLOBフィールドにSHA-256ハッシュの明示的な列を追加すると、そのCLOBフィールドでの検索(完全一致)のパフォーマンスが向上しますか?

  16. 16

    2つの異なる一致フィールドからのAwk合計列

  17. 17

    2つのデータフレームをマージして、長さが異なる日付(異なる見出し)に一致させます

  18. 18

    Mongodbは、2つのフィールドを一致するフィールドと比較します。

  19. 19

    いくつかの正確なフィールドに一致するElasticsearch動的テンプレート

  20. 20

    Elasticsearchは2つのフィールドのコンボに一致します

  21. 21

    マングースのサブドキュメント配列をフィルタリングし、一致する要素のみを返します

  22. 22

    4つのテーブルのうち任意の2つのテーブルのフィールドに一致するレコードを取得します

  23. 23

    WEBAPIルーティングエラー異なるAPIパスを持つリクエストに一致する複数のアクションが見つかりました

  24. 24

    2つの異なるファイルの2つの列のペアを比較し、一致を水平方向にマージして印刷するにはどうすればよいですか(BASHまたはAWKの優先)?

  25. 25

    VIM-グローバルコマンドを使用して2つの異なる条件でフィルタリングできますか?

  26. 26

    ファイルリストコマンドlsの多くのパターンに一致しますか?

  27. 27

    2つのフィールドが一致しない場合は、データベーステーブルに新しい行を挿入します。一致しない場合は、特定の列の値を合計します。

  28. 28

    Mongodbは、マングースの2つの異なるコレクションから一致するすべてのレコードをフェッチする方法

  29. 29

    データ属性を使用してフィルタリングする場合、JSで、同じ単語で順序が異なる2つの配列を一致させるにはどうすればよいですか?

ホットタグ

アーカイブ