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

उल्का के माध्यम से एक सरणी से एक प्रविष्टि खींचो

एक बुनियादी उल्का आवेदन के लिए, मैं इस पर "चारपाई" कहता हूं। यदि आप एक नया प्रोजेक्ट बनाते हैं और केवल संग्रह को परिभाषित करते हैं, तो $pull ऑपरेटर उम्मीद के मुताबिक काम करता है:

कंसोल:

meteor create tickets
cd tickets
meteor run

फिर एक शेल खोलें और अपना डेटा डालें:

meteor mongo

> db.tickets.insert(data)   // exactly your data in the question

फिर बस कुछ बुनियादी कोड और टेम्पलेट तैयार करें:

tickers.js

Tickers = new Meteor.Collection("tickers");

if (Meteor.isClient) {

  Template.body.helpers({
    "tickers": function() {
      return Tickers.find({});
    }
  });

}

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup
  });
}

tickers.html

<head>
  <title>tickers</title>
</head>

<body>
  <h1>Welcome to Meteor!</h1>

  <ul>
    {{#each tickers}}
      {{> ticker}}
    {{/each}}
  </ul>

</body>

<template name="ticker">
  <li>
    {{_id}}
    <ul>
      {{#each entries}}
        {{> entry }}
      {{/each}}
    </ul>
  </li>
</template>

<template name="entry">
  <li>{{ id }} - {{text}}</li>
</template>

एप्लिकेशन ठीक चल रहा होना चाहिए, इसलिए अपने ब्राउज़र कंसोल में .update() करें (पढ़ने के लिए इंडेंट):

Tickers.update(
    { "_id": "ZcEvq9viGQ3uQ3QnT" },
    { "$pull": { "entries": { "id": "fc29774dadd7b37ee0dc5e3e" } }}
)

और आइटम को प्रविष्टियों से हटा दिया जाता है और पृष्ठ को आइटम के बिना रीफ्रेश किया जाता है। तो सब चला गया, जैसी कि उम्मीद थी।

यहां तक ​​कि SimpleSchema और Collection2 पैकेज जोड़ने से भी यहां कोई फर्क नहीं पड़ता:

 meteor add aldeed:simple-schema
 meteor add aldeed:collection2

tickers.js

Tickers = new Meteor.Collection("tickers");

TickerEntries = new SimpleSchema({
  "id": {
    type: String,
    optional: true,
    autoValue: function() {
      if (!this.isSet) {
        return new Mongo.Collection.ObjectID()._str
      }
    }
  },
  "text": {
    type: String
  }
});

Tickers.attachSchema(
  new SimpleSchema({
    entries: { type: [TickerEntries] }
  })
);


if (Meteor.isClient) {

  Template.body.helpers({
    "tickers": function() {
      return Tickers.find({});
    }
  });

}

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup
  });
}

डेटा को फिर से इनिशियलाइज़ करें और ब्राउज़र कंसोल में वही कमांड चलाएँ और सब कुछ वही रहता है।

इसे या अपने स्वयं के संचालन या अन्य अंतरों में किसी भी टाइपिंग की गलतियों की जाँच करें कि यह आपके लिए काम क्यों नहीं करता है।

मैं इसे दृढ़ता से सुझाऊंगा, क्योंकि इस तरह "नए सिरे से शुरू करना" अपेक्षित व्यवहार दिखाता है, और यदि आप अलग व्यवहार देख रहे हैं तो यह संभवतः आपके द्वारा इंस्टॉल किए गए किसी अन्य प्लगइन के साथ एक समस्या है।

लेकिन आम तौर पर, यह काम करता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेस्टजेएस के एबीसी:मोंगोडीबी (मोंगोज) के साथ एक शुरुआती गाइड।

  2. मैं Mongoose में अलग-अलग मानों के लिए क्वेरी कैसे करूं?

  3. सरणी में विशिष्ट स्थिति पर आइटम के आधार पर मोंगोडब क्वेरी

  4. लूप में बुलाए गए डीबी प्रश्नों से पुनर्प्राप्त डेटा लौटाने में समस्या

  5. मोंगोडीबी $ट्रंक