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

नेस्टेड ऑब्जेक्ट सरणियों को क्वेरी करना

आप mongoose-mpath का इस्तेमाल कर सकते हैं ट्री पदानुक्रम बनाने के लिए पैकेज।

ये चरण हैं:

1-) इस प्लगइन का उपयोग करके एक श्रेणी स्कीमा बनाएं।

const mongoose = require("mongoose");
const MpathPlugin = require("mongoose-mpath");

const schema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  }
});

schema.plugin(MpathPlugin);

const Category = mongoose.model("Category", schema);

module.exports = { Category };

2-) पदानुक्रम के साथ श्रेणियों को सम्मिलित करने के लिए मार्ग पोस्ट करें:

const express = require("express");
const router = express.Router();
const { Category } = require("../models/category");

router.post("/", async (req, res) => {
  const { name, parent } = req.body;

  const category = await Category.create({ name, parent });

  res.status(201).send(category);
});

इस मार्ग का उपयोग करते हुए, डाकिया के साथ श्रेणियां बनाएं:

रूट श्रेणी:(रूट श्रेणी होना अच्छा है, रूट का कोई माता-पिता नहीं है)

{
    "name": "ROOT"
}

प्रतिक्रिया इस प्रकार होगी:(जैसा कि आप देखते हैं कि इस प्लगइन ने पदानुक्रम बनाए रखने के लिए आंतरिक रूप से एक पथ फ़ील्ड जोड़ा है)

{
    "_id": "5dd95adf997fc53e1ce944a7",
    "name": "ROOT",
    "path": "5dd95adf997fc53e1ce944a7",
    "__v": 0
}

Cat1 कैटेगरी:(ध्यान दें कि हमने पैरेंट फील्ड को रूट कैटेगरी आईडी पर सेट किया है जो कि 5dd95adf997fc53e1ce944a7 है)

{
    "name": "Cat1",
    "parent": "5dd95adf997fc53e1ce944a7"
}

Cat1 के लिए परिणाम:

{
    "_id": "5dd95b21997fc53e1ce944a8",
    "name": "Cat1",
    "parent": "5dd95adf997fc53e1ce944a7",
    "path": "5dd95adf997fc53e1ce944a7#5dd95b21997fc53e1ce944a8",
    "__v": 0
}

Cat11 श्रेणी:(ध्यान दें कि हमने पैरेंट फ़ील्ड को Cat1 आईडी पर सेट किया है जो कि 5dd95adf997fc53e1ce944a7 है)

{
    "name": "Cat11",
    "parent": "5dd95adf997fc53e1ce944a7"
}

Cat11 के लिए परिणाम:

{
    "_id": "5dd95b8e997fc53e1ce944aa",
    "name": "Cat11",
    "parent": "5dd95adf997fc53e1ce944a7",
    "path": "5dd95adf997fc53e1ce944a7#5dd95b8e997fc53e1ce944aa",
    "__v": 0
}

और नाम से एक श्रेणी खोजने के लिए, आप निम्न मार्ग का उपयोग कर सकते हैं:(मैं सरलता के लिए हार्ड कोडित श्रेणी का नाम, आप श्रेणी का नाम req.body या req.query से ले सकते हैं)

router.get("/", async (req, res) => {
  let category = await Category.findOne({
    name: "Cat11" 
  });

  res.status(200).send(category);
});

यह आपको Cat11 श्रेणी का दस्तावेज़ इस तरह लौटाएगा:

{
    "_id": "5dd95b8e997fc53e1ce944aa",
    "name": "Cat11",
    "parent": "5dd95adf997fc53e1ce944a7",
    "path": "5dd95adf997fc53e1ce944a7#5dd95b8e997fc53e1ce944aa",
    "__v": 0
}

और यदि आप पाया श्रेणी के बच्चों की श्रेणियां प्राप्त करना चाहते हैं, तो आप mongoose-mpath आज़मा सकते हैं getChildrenTree जैसी विधियाँ।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. डेटाबेस बनाम डेटाबेस के रूप में S3 का उपयोग करना (जैसे MongoDB)

  2. PHP से एक MongoDB दिनांक प्रिंट करना

  3. MongoDb में $ पुश काम नहीं कर रहा है?

  4. MongoDb में विरासत:परिभाषित प्रकार के उदाहरणों का अनुरोध कैसे करें

  5. Mongodb में एक सरणी में कई वस्तुओं को पुनः प्राप्त करने के लिए क्वेरी