MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

PyMongo- memilih sub-dokumen dari koleksi dengan regex

Anda memerlukan saluran agregasi yang cocok dengan setiap subdokumen secara terpisah, lalu menggabungkan kembali subdokumen yang cocok ke dalam larik:

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'}
    }
}])))

Saya berasumsi "col" adalah variabel yang menunjuk ke objek Koleksi PyMongo Anda. Ini menghasilkan:

[{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'}]}]

Awalan "r" ke string menjadikannya string "mentah" Python untuk menghindari masalah dengan kode regex. Dalam hal ini regex hanya "ab" sehingga awalan "r" tidak diperlukan, tetapi ini praktik yang baik sekarang agar Anda tidak membuat kesalahan di masa mendatang.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dokumen yang disematkan vs referensi dalam model desain luwak?

  2. Poligon kueri $geowithin $box mongodb tidak mengembalikan apa pun

  3. Mongodb tidak dimulai di ubuntu

  4. Cara memfilter array dalam subdocument dengan MongoDB

  5. Permintaan pencarian teks untuk teks lainnya selalu tidak memberikan hasil?