配列内のオブジェクトが複数の条件に一致するドキュメントを集約する

user2239520

私はそのようなドキュメントのコレクションを持っています:

{
    "_id": ObjectId("xxxxx"),
    "item": [
        { "property": ["attr1", "+1"] },
        { "property": ["attr2", "-1"] }
    ]
}

{
    "_id": ObjectId("xxxxy"),
    "item": [
        { "property": ["attr1", "-1"] },
        { "property": ["attr2", "0"] }
    ]
}

{
    "_id": ObjectId("xxxxz"),
    "item": [
        { "property": ["attr1", "0"] },
        { "property": ["attr2", "+1"] }
    ]
}

できれば集計パイプラインを使用して、プロパティのいずれかが複数の条件に一致する場合にのみ、ドキュメントを一致させる方法はありますか?

たとえば、配列内の1つのオブジェクトが次の両方の条件に一致するクエリが必要です。

("item.property": "attr1") AND ("item.property": /^\+/)

つまり、「attr1」と「+」で始まる要素を含む単一のプロパティです。

ただし、次のような現在のクエリを使用します。

collection.aggregate(
    { $match:
        { $and: 
            [
                { "item.property": "attr1" },
                { "item.property": /^\+/ }
            ]
        }
    }

これは、最初と最後のドキュメントの両方に一致します。これは、両方に「attr1」のプロパティと「+」のステータスを持つ要素が含まれているためです。ただし、「+」で始まる要素は配列内の同じオブジェクトに属していないため、このクエリを最後のドキュメントと一致させたくありません。

集約フレームワークを使用してこの動作を実現する方法はありますか?

svr

以下のクエリをで使用して$elemMatch、配列の両方の値を一致させることができます。

何かのようなもの

db.collection_name.aggregate({
  "$match": {
    "item": {
      "$elemMatch": {
        "property.0": "attr1",
        "property.1": /^\+/
      }
    }
  }
});

また、$all配列インデックスを参照したくない場合は、演算子を使用できます

db.collection_name.aggregate({
  "$match": {
    "item": {
      "$elemMatch": {
        "property": {
          "$all": [
            "attr1",
            /^\+/
          ]
        }
      }
    }
  }
});

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

MongoDBのオブジェクト配列内の複数のフィールドに一致するドキュメントを検索します

分類Dev

オブジェクトの配列内のobjectIdに一致するドキュメント全体を削除します-MongoDB

分類Dev

IDの配列があり、オブジェクトドキュメントmongodb内の配列内の一致するオブジェクトを更新する必要があります。そうでない場合は、挿入します。

分類Dev

オブジェクトのネストされた配列を持つ複数のドキュメントから、mongodoDbからのクエリに一致するすべての値を一度に取得する方法

分類Dev

MongoDB-複数のプロパティが同じ配列要素内の条件に一致するドキュメントを検索します

分類Dev

MongoDBは、ネストされたオブジェクトの配列によってドキュメントをクエリし、クエリに一致するドキュメントの配列内のすべてのオブジェクトを更新します

分類Dev

サブドキュメント内で特定の条件が一致するネストされたmongodbドキュメントに新しいオブジェクトをプッシュします

分類Dev

一致する属性を持つオブジェクトの配列を持つmongoドキュメントを取得する方法

分類Dev

MongoDBは一致するドキュメントを検索し、オブジェクトの配列内の一致するフィールドを更新します

分類Dev

条件に一致する配列内のすべてのオブジェクトをカウントするにはどうすればよいですか?

分類Dev

既存の配列内の一致するキーを持つオブジェクトを分割します

分類Dev

MongoDBを使用して、配列内のオブジェクト内のオブジェクト内のドキュメントを配列内のオブジェクト内で更新するにはどうすればよいですか?

分類Dev

配列内のすべての要素が条件に一致する場合、Mongoはドキュメントを削除します

分類Dev

Mongodbは、JSON配列内のすべてのJSONオブジェクトにキーが存在するドキュメントを選択します

分類Dev

条件に一致する配列内のオブジェクトのインデックスを取得します

分類Dev

オブジェクトの配列内の複数の配列を単一の配列にマージする

分類Dev

複数の条件が一致する場合のJsonPath選択オブジェクトフィールド

分類Dev

複数の配列(2つ以上)で一致するオブジェクトを検索する

分類Dev

ID に一致する配列内のオブジェクトに配列を詰め込む

分類Dev

オブジェクトの配列に$ in演算子を使用して一致ドキュメントを返す方法

分類Dev

配列内の値と一致するキーに基づいてネストされたオブジェクトをフィルタリングする

分類Dev

オブジェクト内の一致するキーで配列を置き換える

分類Dev

カウント条件に一致するネストされたオブジェクトを持つドキュメントを取得します

分類Dev

一致するキーと値に基づいて、dataweave内のオブジェクトの配列に対して追加を行う必要があります

分類Dev

複数の一致するキーに基づいてオブジェクトをマージする-Javascript

分類Dev

複数の配列の一致からオブジェクトを作成する方法

分類Dev

複数のドキュメントを1つの配列に集約する方法は?

分類Dev

プロパティが一致する場合、配列内のオブジェクトを返します

分類Dev

オブジェクトの配列に一致するキーの値を追加します

Related 関連記事

  1. 1

    MongoDBのオブジェクト配列内の複数のフィールドに一致するドキュメントを検索します

  2. 2

    オブジェクトの配列内のobjectIdに一致するドキュメント全体を削除します-MongoDB

  3. 3

    IDの配列があり、オブジェクトドキュメントmongodb内の配列内の一致するオブジェクトを更新する必要があります。そうでない場合は、挿入します。

  4. 4

    オブジェクトのネストされた配列を持つ複数のドキュメントから、mongodoDbからのクエリに一致するすべての値を一度に取得する方法

  5. 5

    MongoDB-複数のプロパティが同じ配列要素内の条件に一致するドキュメントを検索します

  6. 6

    MongoDBは、ネストされたオブジェクトの配列によってドキュメントをクエリし、クエリに一致するドキュメントの配列内のすべてのオブジェクトを更新します

  7. 7

    サブドキュメント内で特定の条件が一致するネストされたmongodbドキュメントに新しいオブジェクトをプッシュします

  8. 8

    一致する属性を持つオブジェクトの配列を持つmongoドキュメントを取得する方法

  9. 9

    MongoDBは一致するドキュメントを検索し、オブジェクトの配列内の一致するフィールドを更新します

  10. 10

    条件に一致する配列内のすべてのオブジェクトをカウントするにはどうすればよいですか?

  11. 11

    既存の配列内の一致するキーを持つオブジェクトを分割します

  12. 12

    MongoDBを使用して、配列内のオブジェクト内のオブジェクト内のドキュメントを配列内のオブジェクト内で更新するにはどうすればよいですか?

  13. 13

    配列内のすべての要素が条件に一致する場合、Mongoはドキュメントを削除します

  14. 14

    Mongodbは、JSON配列内のすべてのJSONオブジェクトにキーが存在するドキュメントを選択します

  15. 15

    条件に一致する配列内のオブジェクトのインデックスを取得します

  16. 16

    オブジェクトの配列内の複数の配列を単一の配列にマージする

  17. 17

    複数の条件が一致する場合のJsonPath選択オブジェクトフィールド

  18. 18

    複数の配列(2つ以上)で一致するオブジェクトを検索する

  19. 19

    ID に一致する配列内のオブジェクトに配列を詰め込む

  20. 20

    オブジェクトの配列に$ in演算子を使用して一致ドキュメントを返す方法

  21. 21

    配列内の値と一致するキーに基づいてネストされたオブジェクトをフィルタリングする

  22. 22

    オブジェクト内の一致するキーで配列を置き換える

  23. 23

    カウント条件に一致するネストされたオブジェクトを持つドキュメントを取得します

  24. 24

    一致するキーと値に基づいて、dataweave内のオブジェクトの配列に対して追加を行う必要があります

  25. 25

    複数の一致するキーに基づいてオブジェクトをマージする-Javascript

  26. 26

    複数の配列の一致からオブジェクトを作成する方法

  27. 27

    複数のドキュメントを1つの配列に集約する方法は?

  28. 28

    プロパティが一致する場合、配列内のオブジェクトを返します

  29. 29

    オブジェクトの配列に一致するキーの値を追加します

ホットタグ

アーカイブ