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

PyMongo-正規表現によるコレクションからのサブドキュメントの選択

    各サブドキュメントを個別に照合し、一致するサブドキュメントを配列に再結合する集約パイプラインが必要です。

    from pprint import pprint
    from bson import Regex
    
    regex = Regex(r'ab')
    pprint(list(col.aggregate([{
        '$unwind': '$docs'
    }, {
        '$match': {'docs.value': regex}
    }, {
        '$group': {
            '_id': '$_id',
            'docs': {'$push': '$docs'}
        }
    }])))
    

    「col」はPyMongoコレクションオブジェクトを指す変数だと思います。この出力:

    [{u'_id': u'1', 
      u'docs': [{u'key': u'5678', u'value': u'abgh'}]},
     {u'_id': u'0',
      u'docs': [{u'key': u'1234', u'value': u'abcd'},
                {u'key': u'5678', u'value': u'abef'}]}]
    

    文字列の「r」プレフィックスは、正規表現コードの問題を回避するために、Pythonの「生の」文字列になります。この場合、正規表現は単に「ab」であるため、「r」プレフィックスは必要ありませんが、将来間違えないように、今は良い習慣です。




    1. Slaveredisdbに書き込む

    2. Redisオブジェクトキャッシュを使用してWordPressのインストールを高速化

    3. LumenとMongoDB?

    4. Javaはバイトをバイナリセーフ文字列に変換します