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

配列フィールドがMongoDBの別の配列の一部であるかどうかを確認するにはどうすればよいですか?

    これを行うには、集約フレームワークを使用できます。次のデータが与えられた

    > db.post.find()
    { "_id" : 1, "tags" : [ "tag1" ] }
    { "_id" : 2, "tags" : [ "tag1", "tag3" ] }
    { "_id" : 3, "tags" : [ "tag2", "tag4" ] }
    { "_id" : 4, "tags" : [ "tag1", "tag2", "tag3", "tag4" ] }
    

    集計クエリ

    db.post.aggregate({
      $project: {
        _id: 1,
        tags: 1,
        killFlag: {
          $const: [true, false]
        }
      }
    }, {
      $unwind: "$tags"
    }, {
      $unwind: "$killFlag"
    }, {
      $match: {
        $nor: [{
            tags: {
              $in: ['tag1', 'tag2', 'tag4']
            },
            killFlag: true
          }
        ]
      }
    }, {
      $group: {
        _id: "$_id",
        tags: {
          $addToSet: "$tags"
        },
        killFlag: {
          $max: "$killFlag"
        }
      }
    }, {
      $match: {
        killFlag: false
      }
    }, {
      $project: {
        _id: 1,
        tags: 1
      }
    })
    

    あなたに与えるだろう

    {
      "result": [{
          "_id": 3,
          "tags": [
              "tag4",
              "tag2"
          ]
        }, {
          "_id": 1,
          "tags": [
              "tag1"
          ]
        }
      ],
      "ok": 1
    }
    


    1. MongoDB-複数の$or操作

    2. ClusterControlを使用した複数のデータベーステクノロジーの管理

    3. ロギング用のredis

    4. 127.0.0.1:6379へのRedis接続に失敗しました-ECONNREFUSEDに接続します