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

नेस्टेड दस्तावेज़ पर नेवला स्कीमा सेट टाइमस्टैम्प

आप आंतरिक स्कीमा में नेवला स्कीमा टाइमस्टैम्प विकल्प भी लागू कर सकते हैं।

उदाहरण के लिए निम्नलिखित स्कीमा में, मैंने timestamps: true applied लागू किया आंतरिक बोली योजना के विकल्प।

const mongoose = require("mongoose");

const forumSchema = new mongoose.Schema(
  {
    title: { type: String, required: true },
    biddings: [
      {
        type: new mongoose.Schema(
          {
            biddingId: String,
            biddingPoints: Number
          },
          { timestamps: true }
        )
      }
    ]
  },
  { timestamps: true }
);

const Forum = mongoose.model("Forum", forumSchema);

module.exports = Forum;

आइए अब इसका परीक्षण करें:

मैंने निम्नलिखित कोड के साथ एक फ़ोरम दस्तावेज़ बनाया:

const Forum = require("../models/forum");

router.post("/forums", async (req, res) => {
  const result = await Forum.create(req.body);
  res.send(result);
});

अनुरोध निकाय:

{
    "title": "Title 1",
    "biddings": [
        {
            "biddingId": "bidding1",
            "biddingPoints": 10
        },
        {
            "biddingId": "bidding2",
            "biddingPoints": 30
        }
    ]
}

प्रतिक्रिया:(जैसा कि आप देखते हैं कि टाइमस्टैम्प माता-पिता और उप दस्तावेजों दोनों पर लागू होते हैं)

{
    "_id": "5e3073b3a2890b03b029e92c",
    "title": "Title 1",
    "biddings": [
        {
            "_id": "5e3073b3a2890b03b029e92e",
            "biddingId": "bidding1",
            "biddingPoints": 10,
            "createdAt": "2020-01-28T17:47:31.376Z",
            "updatedAt": "2020-01-28T17:47:31.376Z"
        },
        {
            "_id": "5e3073b3a2890b03b029e92d",
            "biddingId": "bidding2",
            "biddingPoints": 30,
            "createdAt": "2020-01-28T17:47:31.376Z",
            "updatedAt": "2020-01-28T17:47:31.376Z"
        }
    ],
    "createdAt": "2020-01-28T17:47:31.376Z",
    "updatedAt": "2020-01-28T17:47:31.376Z",
    "__v": 0
}

आइए अब _id:5e3073b3a2890b03b029e92e के साथ बिडिंग पॉइंट को अपडेट करें।

router.put("/forums/:forumId/biddings/:biddingId",
  async (req, res) => {
    let points = req.body.points;

    try {
      let result = await Forum.findByIdAndUpdate(
        req.params.forumId,
        {
          $set: {
            "biddings.$[inner].biddingPoints": points
          }
        },
        {
          arrayFilters: [{ "inner._id": req.params.biddingId }],
          new: true
        }
      );

      if (!result) return res.status(404);

      res.send(result);
    } catch (err) {
      console.log(err);
      res.status(500).send("Something went wrong");
    }
  }
);

यूआरएल इस तरह होगा:http://.../forums/5e3073b3a2890b03b029e92c/biddings/5e3073b3a2890b03b029e92e

अनुरोध:(इसका मतलब है कि मैं _id:5e3073b3a2890b03b029e92e के साथ बोली के 50 अंक अपडेट करना चाहता हूं :

{
    "points": 50
}

प्रतिक्रिया:(जैसा कि आप देखते हैं updatedAt अपडेट की गई बोली का फ़ील्ड मान 2020-01-28T17:47:31.376Z से अपने आप बदल गया से 2020-01-28T17:50:03.855Z )

{
    "_id": "5e3073b3a2890b03b029e92c",
    "title": "Title 1",
    "biddings": [
        {
            "_id": "5e3073b3a2890b03b029e92e",
            "biddingId": "bidding1",
            "biddingPoints": 50,
            "createdAt": "2020-01-28T17:47:31.376Z",
            "updatedAt": "2020-01-28T17:50:03.855Z"   ==> UPDATED
        },
        {
            "_id": "5e3073b3a2890b03b029e92d",
            "biddingId": "bidding2",
            "biddingPoints": 30,
            "createdAt": "2020-01-28T17:47:31.376Z",
            "updatedAt": "2020-01-28T17:47:31.376Z"
        }
    ],
    "createdAt": "2020-01-28T17:47:31.376Z",
    "updatedAt": "2020-01-28T17:50:03.855Z",
    "__v": 0
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. जावा फ्यूचर - स्प्रिंग ऑथेंटिकेशन ऑडिटरवेयर में शून्य है

  2. MongoDB के लिए टेस्ट डेटा बनाना

  3. महीने के आधार पर मोंगोडब में पुराने रिकॉर्ड हटाएं

  4. स्प्रिंग बूट में एक बार MongoClient को इनिशियलाइज़ कैसे करें और इसके तरीकों का उपयोग कैसे करें?

  5. Mongodb - आज के योग, सप्ताह के योग और महीने के योग को एक प्रश्न में पूछें