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

$in को दूसरे तर्क के रूप में एक सरणी की आवश्यकता है, पाया गया:अनुपलब्ध

पहला विकल्प --> एकत्रीकरण का उपयोग करें

क्योंकि आपके संग्रह के कुछ दस्तावेज़ों में permissions . हो भी सकती है और नहीं भी हो सकती है फ़ील्ड या प्रकार सरणी के बराबर नहीं है इसलिए आपको यह त्रुटि मिल रही है।

आपको $type मिल सकता है फ़ील्ड का और यदि यह आपके दस्तावेज़ में कोई सरणी नहीं है या मौजूद नहीं है, तो आप इसे $addFields के साथ एक सरणी के रूप में जोड़ सकते हैं और $cond एकत्रीकरण

db.collection.aggregate([
  { "$addFields": {
    "permissions": {
      "$cond": {
        "if": {
          "$ne": [ { "$type": "$permissions" }, "array" ]
        },
        "then": [],
        "else": "$permissions"
      }
    }
  }},
  { "$project": {
    "filteredChildren": {
      "$filter": {
        "input": "$moduleChildren",
        "as": "moduleChild",
        "cond": {
          "$in": [ "$$moduleChild._id", "$permissions" ]
        }
      }
    }
  }}
])

दूसरा विकल्प -->

आप जिस जीयूआई का उपयोग कर रहे हैं उस पर अपने मोंगो शेल या रोबोमोंगो पर जाएं और इस कमांड को चलाएं

db.collection.update(
  { "permissions": { "$ne": { "$type": "array" } } },
  { "$set": { "permissions": [] } },
  { "multi": true }
)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. सी # के लिए सबसे परिपक्व मोंगोडीबी ड्राइवर क्या है?

  2. नेवला इंटरनेट के बिना कनेक्ट नहीं हो सकता

  3. मैं कमांड लाइन से MongoDB डेटाबेस कैसे छोड़ूं?

  4. Amazon EC2 पर MongoDB को तैनात करने के लिए 6 सर्वोत्तम अभ्यास

  5. मोंगोडीबी $isoDayOfWeek