MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

सरणी मानों के लिए मिलान स्थिति कैसे लिखें?

ठीक है आप इसे दो तरह से कर सकते हैं:

जैसा कि आपके पास है:

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

आपको अपनी स्ट्रिंग्स की सूची को ObjectId के अजगर कोड का उपयोग करके सूची में बदलने की आवश्यकता है:

from bson.objectid import ObjectId


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


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

यह इस तरह दिखेगा :[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]

फिर नई सूची का उपयोग करके my_list , आप इस तरह की क्वेरी कर सकते हैं:

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

या दूसरे तरीके से जिसे मैं पसंद नहीं करूंगा, क्योंकि userid के लिए मानों की संख्या की तुलना में कोड में केवल कुछ को परिवर्तित करना आसान है डीबी में सभी दस्तावेजों पर फ़ील्ड, लेकिन अगर आप इसे डीबी क्वेरी का उपयोग करके करना चाहते हैं:

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

नोट : यदि आपके पास bson पैकेज नहीं है, तो आपको pip install bson जैसा कुछ करके इसे इंस्टॉल करना होगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb छाया हुआ उप-संग्रह

  2. मोंगोडीबी को सबडॉक्यूमेंट मिलता है

  3. MongoDB क्वेरी (2dsphere) को पार्स नहीं कर सकता:दो शर्तें

  4. किसी अन्य फ़ील्ड mongodb द्वारा विशिष्ट मान समूह खोजें

  5. एक कुंजी लाने के लिए फ़ंक्शन निर्दिष्ट करके समूह कैसे करें?