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

Bagaimana cara menulis kondisi kecocokan untuk nilai array?

Ok Anda bisa melakukannya dengan dua cara :

Seperti yang Anda lakukan ini :

uid = Objectid("5d518caed55bc00001d235c1")
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']

Anda perlu mengonversi daftar string Anda menjadi daftar ObjectId menggunakan kode python :

from bson.objectid import ObjectId


disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
my_list = []


for i in disuid:
    my_list.append(ObjectId(i))

Ini akan terlihat seperti ini :[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]

kemudian dengan menggunakan daftar baru my_list , Anda dapat melakukan query seperti ini :

user_posts.aggregate([{"$match" : { "$or" : [{ "userid" : uid }, { "userid" : { "$in" : my_list }}]}}])

Atau dengan cara lain yang tidak saya sukai, karena mengonversi hanya beberapa kode lebih mudah dibandingkan dengan n num nilai untuk userid bidang atas semua dokumen dalam DB, tetapi untuk berjaga-jaga jika Anda ingin itu dilakukan menggunakan kueri DB :

user_posts.aggregate([{$addFields : {userStrings : {$toString: '$userid'}}},{"$match" : { "$or" : [{ "userid" : uid }, { "userStrings" : { "$in" : disuid }}]}}])

Catatan : Jika Anda tidak memiliki paket bson, maka Anda perlu menginstalnya dengan melakukan sesuatu seperti pip install bson




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Gambar yang dikembalikan dari REST API selalu ditampilkan rusak

  2. Mongodb menghemat satu hari lebih sedikit - Masalah Zona Waktu

  3. MongoDB:Menggabungkan Pencarian Teks dan Kueri Geospasial

  4. Menggunakan agregat untuk menggabungkan daftar semua subdokumen yang cocok dengan kueri?

  5. Driver Java MongoDB:autoConnectRetry