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

उल्का और MongoDB के साथ किसी सरणी में किसी ऑब्जेक्ट से उप-दस्तावेज़ कैसे वापस करें?

!समाधान!

यहाँ समस्या यह है कि मुझे पता नहीं था कि पैकेज क्या है aldeed:collection2 मेरे कोड के लिए कर रहा था। मैंने इस पैकेज को OrionJS का उपयोग करने के लिए जोड़ा है। (यहां github पेज है ) और मैंने ध्यान नहीं दिया कि यह aldeed:collection2 मेरे सभी अपडेट पर सत्यापन के लिए बाध्य कर रहा था। मैं पहले इसमें भाग रहा था, लेकिन यह मुझे एक त्रुटि दे रहा था। अतीत में मैं त्रुटि का पता लगाने में सक्षम था। इस बार, कोई त्रुटि नहीं थी कहीं भी। यह सरणी को अद्यतन करेगा, लेकिन एक खाली वस्तु के साथ। इतना अधिक भ्रामक। मैं aldeed:collection2 पर एक समस्या पोस्ट करने जा रहा हूं का प्रोजेक्ट पेज।

प्रोजेक्ट डॉक्यूमेंटेशन से :"[aldeed:collection2 है एक] उल्का पैकेज जो आपको एक Mongo.Collection में एक स्कीमा संलग्न करने की अनुमति देता है। सम्मिलित और अपडेट करते समय . उस स्कीमा के विरुद्ध स्वचालित रूप से पुष्टि करता है क्लाइंट या सर्वर कोड से।"

दस्तावेज़ीकरण सुधार के लिए यहां पाया जा सकता है ।

समाधान:

क्योंकि मैं aldeed:simple-schema का उपयोग कर रहा हूं और aldeed:collection2 मुझे अपने संग्रह में एक उचित "स्कीमा" संलग्न करना सुनिश्चित करना होगा।

लाइक सो:

Ideas.attachSchema(new SimpleSchema({
  // ... a bunch of other schema data

  // I was missing this:
  score: {
    type: [Object],
    optional: true,
    label: 'Score',
  },
  "score.$.userId": {
    type: String,
    optional: true,
    label: 'Score'
  },
  "score.$.score": {
    type: String,
    optional: true,
    label: 'Score'
  }

  // ... a bunch more schema data
});

समस्या निवारण:

मैंने इसका पता कैसे लगाया?

खैर, मैं मोंगोडीबी के लिए नया हूं - इसलिए मैं कंसोल पर जाने के लिए अनिच्छुक था और वहां से अपडेट करने का प्रयास करता था। वास्तव में, यह मेरे साथ तब तक नहीं हुआ जब तक मैं अपनी पत्नी से बात नहीं कर रहा था।

मैंने सब कुछ के आसपास उद्धरण जोड़कर सब कुछ करने की कोशिश की , अन्य लोगों के कोड को देख रहे हैं। मैंने MongoDB के सभी उत्कृष्ट दस्तावेज़ों की जाँच की। मैंने यूट्यूब वीडियो देखा। मैंने अन्य stackoverflow.com समाधानों को देखा। अंत में यह मेरे साथ हुआ कि हर किसी का कोड बिल्कुल मेरे कोड जैसा दिखता है, और यह सिर्फ काम करना चाहिए। मैंने Clarity.fm पर भी साइन अप किया था सच्चा ग्रीफ से एक प्रश्न पूछने के लिए $1 प्रति मिनट के लिए।

... मुझे लगने लगा था कि मेरा मोंगो डेटाबेस काम नहीं कर रहा है। शायद माई मोंगो इंस्टॉल टूट गया था?

तो, ठीक है, उसके लिए एक परीक्षण है... इस यातना के दो दिनों के बाद आखिरकार यह मेरे पास आया - बस मोंगो कंसोल में अपडेट का प्रयास करें... (डुह)

meteor:PRIMARY> db.ideas.update({_id:"DqEGjK3xSTBdpEgXa"}, {$addToSet: {score: {userId: "123456", score: 1}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
meteor:PRIMARY> db.ideas.find()
{
  "_id" : "DqEGjK3xSTBdpEgXa",
  "title" : "Revive Randolf With Bloodmagic",
  "body" : "Bring Randolf back from the dead using witche's bloodmagic.",
  "userId" : "Rz28ByKYM4Y8futFb",
  "author" : "Iryna Iglehart",
  "episodeId" : "iQaxyLPi5iaYtQngf",
  "timestamp" : ISODate("2016-06-08T17:37:57.237Z"),
  "score" : [
    {
      "userId" : "123456",
      "score" : 1
    }
  ],
  "overallScore" : 0,
  "votedOnBy" : [ ],
  "timesVotedOn" : 0
}

एक बार मुझे पता था कि मोंगो मेरा अपडेट कर सकता है - मैं जानता समस्या मेरे उल्का सेटअप के साथ होनी थी। अगर यह एक समस्या होती तो मुझे अब तक उल्का पर एक मुद्दा मिल जाता। मैंने इसका पता लगाने की कोशिश में Google के हर अंधेरे कोने में खोज की।

बहुत समय पहले मुझे याद आया कि मुझे अजीब . हो रहा था सत्यापन के मुद्दे पहले इन सत्यापन मुद्दों को छोड़कर हमेशा एक त्रुटि आई। तथ्य यह है कि कोई त्रुटि नहीं थी और सरणी को केवल खाली वस्तुओं के साथ अद्यतन किया गया था, वास्तव में मुझे एक पाश के लिए फेंक दिया।

मैंने क्या सीखा:

  1. अगर पहली बार में उल्का विफल हो जाता है, तो मोंगो कंसोल आज़माएं...
  2. के अनुसार @David Weldon की टिप्पणी - एक और अच्छी डिबगिंग तकनीक जिसने मेरी मदद की होगी, जिसे मैं बहुत पहले कोशिश कर सकता था, एक नया उल्का प्रोजेक्ट शुरू करना और वहां मेरे कोड का परीक्षण करना, फिर एक समय में पैकेज जोड़ना और देखें कि यह कब/यदि उनमें से कोई भी कोड तोड़ता है। यह परीक्षण इंगित करता कि मूल रूप से कोड सही था, और केवल एक अतिरिक्त पैकेज के कारण संलग्न स्कीमा की आवश्यकता थी।
  3. आंख बंद करके पैकेज न जोड़ें। समझें कि क्या/कब पैकेज विकास के प्रवाह को बदलते हैं, जैसे कि aldeed:collection2

धन्यवाद:

@Michel Floyd को बहुत-बहुत धन्यवाद और @David Weldon इस समस्या पर आपकी सभी मदद के लिए।

महत्वपूर्ण लिंक:

  1. मैंने सामान्य गलतियों से काफी कुछ सीखा है @David Weldon द्वारा लिखित
  2. aldeed के लिए दस्तावेज़:संग्रह2
  3. aldeed के लिए दस्तावेज़:simple-schema
  4. इस उल्का ट्यूटोरियल - यह लाने () के बारे में बात करता है और यह कैसे सहायक है। इस समस्या के निवारण के दौरान इससे मुझे मदद मिली।
  5. अपडेट के बारे में दस्तावेज़ीकरण की समीक्षा करना MongoDB से
  6. MongoDB $addToSet Documentation
  7. MongoDB $push Documentation
  8. [MongoDB Bios उदाहरण संग्रह](https://docs .mongodb.com/manual/reference/bios-example-Collection/] - इस तरह के दस्तावेजों को देखने के बाद मुझे वास्तव में पता चला कि मेरे डेटाबेस डिजाइन में कुछ भी गलत नहीं है, यह सब करने का एक तरीका होना चाहिए (और जाहिर है)

संबंधित प्रश्न:

[समाधान] MeteorJS में MongoDB संग्रह पर उप-दस्तावेज़ों की एक सरणी को कैसे अपडेट करें




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. दो OR-प्रश्नों को AND में Mongoose के साथ संयोजित करें

  2. मोंगोडीबी:डीबी संग्रह का उपयोग करते समय डेटा को सॉर्ट करना ढूंढें

  3. node.js mongojs findOne कॉलबैक रिटर्निंग एरर अशक्त के रूप में

  4. पायथन मोगो आयात त्रुटि:नाम कनेक्शन आयात नहीं कर सकता

  5. स्प्रिंग मोंगो रिपोजिटरी डालने के बजाय अपडेट या अप्सर्टिंग कर रहा है