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

मैं MongoDB और Express.js के साथ एक संग्रह में सभी दस्तावेज़ों की गणना कैसे करूं और नियंत्रक में सामग्री का उपयोग कैसे करूं?

इसे मोंगोडब एग्रीगेशन फ्रेमवर्क के साथ आसानी से किया जा सकता है।

हम $facet का इस्तेमाल करते हैं दस्तावेज़ों की कुल संख्या के साथ पृष्ठांकित डेटा प्राप्त करने के लिए एकत्रीकरण।

एकत्रीकरण ढांचे में हम $lookup का उपयोग करते हैं नेवले के बजाय आबाद। $lookup एक सरणी देता है, सरणी में पहला आइटम प्राप्त करने के लिए हम $ का उपयोग करते हैं। arrayElemAt $addFields के अंदर ऑपरेटर ।

खेल का मैदान

और यहां आपके ऐप पर लागू करने के लिए कोड है:(पहला $ मैच एकत्रीकरण यहां अनावश्यक है, लेकिन अगर आपको भविष्य में इसकी आवश्यकता हो तो मैं इसे डालता हूं)

exports.getPosts = async (req, res, next) => {
    const perPage = 5;
    const currPage = req.query.page ? parseInt(req.query.page) : 1;
    const skip = (currPage - 1) * perPage;

    try {
        const result = await Post.aggregate([{
                $match: {},
            },
            {
                $sort: {
                    created_at: -1,
                },
            },
            {
                $lookup: {
                    from: "categories",
                    localField: "category",
                    foreignField: "_id",
                    as: "category",
                },
            },
            {
                $addFields: {
                    category: {
                        $arrayElemAt: ["$category", 0],
                    },
                },
            },
            {
                $facet: {
                    totalRecords: [{
                        $count: "total",
                    }, ],
                    data: [{
                            $skip: skip,
                        },
                        {
                            $limit: perPage,
                        },
                    ],
                },
            },
        ]);

        let postsCount = result[0].totalRecords[0].total;
        const pageCount = Math.ceil(postsCount / perPage);
        const pageDecrement = currPage > 1 ? 1 : 0;
        const pageIncrement = currPage < pageCount ? 1 : 0;
        const posts = result[0].data;

        res.render("default/index", {
            moment: moment,
            layout: "default/layout",
            website_name: "MEAN Blog",
            page_heading: "XPress News",
            page_subheading: "A MEAN Stack Blogging Application",
            currPage,
            posts,
            pageDecrement,
            pageIncrement,
        });
    } catch (err) {
        console.log("Error: ", err);
        res.status(500).send("something went wrong");
    }
};

वैसे, पोस्ट स्कीमा में, दिनांक फ़ील्ड के लिए आप default: Date.now() . का उपयोग करते हैं , इससे दिनांक मान हमेशा समान मान होगा, यह इस प्रारूप में होना चाहिए:default: Date.now



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पासपोर्ट-स्थानीय नेवला नोड.जेएस द्वारा एकाधिक उपयोगकर्ता प्रकारों के लिए समर्थन

  2. अलग गिनती के आधार पर छाँटने के लिए मोंगो क्वेरी

  3. डोकर कंटेनर में एक मोंगोडब खोल कैसे शुरू करें?

  4. घटनाओं का उपयोग कैसे करें मोंगोडब तर्क को नोड से बाहर रखें। जेएस अनुरोध हैंडलर

  5. ऊपरी विफलताओं में स्थितीय ($) के साथ $पुश करें