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

उल्का - MongoDB त्रुटि:गैर-सरणी में $addToSet संशोधक लागू नहीं कर सकता

function addItem(list_id, item_name) {
    if(!item_name && !list_id)
      return;
    lists.update({_id:list_id}, {$addToSet:{items:{Name:item_name}}});
  }

ऐसा लगता है कि आप किसी ऑब्जेक्ट को किसी सेट में जोड़ने का प्रयास कर रहे हैं। आपको सिम्युलेशन पर एक त्रुटि मिल रही है। आइए उस त्रुटि की जांच करें। वह कोड जो त्रुटिपूर्ण है:

https://github.com/meteor/meteor/blob /master/packages/minimongo/modify.js

 $addToSet: function (target, field, arg) {
    var x = target[field];
    if (x === undefined)
      target[field] = [arg];
    else if (!(x instanceof Array))
      throw Error("Cannot apply $addToSet modifier to non-array");
    else { ...

उह ओह, throw Error("Cannot apply $addToSet modifier to non-array.")

अपना कोड देखें:

Object
  Category: "Tools"
  _id: "eaa681e1-83f2-49f2-a42b-c6d84e526270"
...
  items: Object
...

items एक वस्तु है, एक सरणी नहीं! यह त्रुटिपूर्ण होगा।

क्या आप $addToSet मोंगो के साथ एक वस्तु के लिए? आइए कोड देखें।

https://github.com/mongodb/mongo/blob1/4aad4ad1baad1baad4ad7baad7 /db/update.cpp

 case ADDTOSET: {
            uassert( 12592 ,  "$addToSet can only be applied to an array" , in.type() == Array );
            ...
        }

नहीं! यह पुराने मोंगो कोड से है, क्योंकि समकालीन कोडबेस विशाल है, लेकिन वही बात है।

मुझे केवल एक insert मिला है आपके कोड में।

'keyup #add-category': function(e, t) {
  if (e.which === 13) {
    var catVal = String(e.target.value || "");
    if (catVal) {
      lists.insert({Category:catVal});
      Session.set('adding_category', false);
    }
  }
},

lists.insert({Category:catVal,items:[]}) आज़माएं . ताकि आइटम को पहली बार उपयोग किए जाने पर किसी ऑब्जेक्ट के बजाय एक सरणी के रूप में प्रारंभ किया जाए।

साथ ही, मुझे नहीं लगता कि $addToSet किसी सरणी में वस्तुओं की तुलना वैसे ही करता है जैसे आप चाहते हैं, इसलिए एक अलग संग्रह बनाने पर विचार करें items जिसमें एक categoryId है ।

यह विशुद्ध रूप से एक संयोग है कि यह एक जगह काम कर रहा है और दूसरी जगह नहीं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. db.command का उपयोग करके पायथन मोंगो कुल कैसे प्राप्त करें?

  2. बीएसओएन टाइमस्टैम्प को मोंगो चेंजस्ट्रीम से डेट में कैसे बदलें?

  3. मोंगोइड यादृच्छिक दस्तावेज़

  4. बहिष्कृत बॉडी-पार्सर?

  5. ग्रेल्स के लिए मोंगोडब एग्रीगेशन फ्रेमवर्क 1.3.7