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

नेवला का उपयोग कर mongoDb में सरणी के अंदर अद्यतन वस्तु

MongoDB संग्रह में सरणी के अंदर की वस्तुओं (दस्तावेज़ों) को कहा जाता है - उपदस्तावेज़

इस मामले में, विशिष्ट उप-दस्तावेज़ को अपने _id से अपडेट करने के लिए , आप Mongoose findOneAndUpdate का उपयोग कर सकते हैं विधि:

play.findOneAndUpdate({
    "_id": "59b7e839200a5c00ee2d2851",
    "playesList._id": "59b2a4f749fee40959e556d3"
}, {
    "$set": {
        "playesList.$.name": "something"
    }
}, function(error, success) {

})

सबसे पहले आपको संग्रह में दस्तावेज़ ढूंढ़ने होंगे:

"_id": "59b7e839200a5c00ee2d2851"

फिर उसके _id . द्वारा उप-दस्तावेज़ खोजें दूसरे पैरामीटर का उपयोग करना:

"playesList._id": "59b2a4f749fee40959e556d3"

और जब आपको वह उप-दस्तावेज़ मिल जाए जिसे आप अपडेट करना चाहते हैं, तो $set<का उपयोग करें /ए> ऑपरेटर को नया मान name . पर सेट करने के लिए पाए गए उप-दस्तावेज़ की संपत्ति:

"$set": {
    "playesList.$.name": "something"
}

ध्यान दें कि findOneAndUpdate अद्यतन दस्तावेज़ की पिछली स्थिति लौटाता है।

कार्य उदाहरण:

var express = require('express')
var app = express()
var router = require('express').Router()
var mongoose = require('mongoose')
var Schema = mongoose.Schema

mongoose.connect('mongodb://localhost:27017/stackoverflowanswer')
mongoose.Promise = global.Promise

var PlayerSchema = new Schema({
    play: String,
    playersList: [{
        name: String
    }]
})

var Player = mongoose.model('Players', PlayerSchema)

app.use('/', router)

router.get('/add-player', function(req, res, next) {
    var player = new Player()

    player._id = "59b7e839200a5c00ee2d2851"
    player.play = "New"
    player.playersList.push({
        _id: "59b2a4f749fee40959e556d3",
        name: "abcd"
    }, {
        _id: "59b2a4f749fee40959e556d4",
        name: "pqrs"
    })

    player.save(function(err) {
        if (err) throw err

        res.json({
            message: 'Success'
        })
    })
})

router.get('/update-player', function(req, res, next) {
    Player.findOneAndUpdate({
        "_id": "59b7e839200a5c00ee2d2851",
        "playersList._id": "59b2a4f749fee40959e556d3"
    }, {
        "$set": {
            "playersList.$.name": "wxyz"
        }
    }, function(error, success) {
        if (error) throw error

        res.json({
            message: 'Success'
        })
    })
})

app.listen(8080, function() {
    console.log('Node.js listening on port ' + 8080)
})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला से संग्रह की एक सूची प्राप्त करने की कोशिश कर रहा

  2. पॉप्युलेट करने के लिए Mongoose.js उप-दस्तावेज़ सरणी प्राप्त नहीं कर सकता

  3. नेवला में एक उप-दस्तावेज़ खोजें

  4. नोड/एक्सप्रेस के लिए मोंगोडीबी उदाहरण से AJAX कॉल/से?

  5. मोंगोडीबी के लिए जेएनडीआई लुकअप के दौरान क्लासकास्ट अपवाद, डब्ल्यूएबी के अंदर, लिबर्टी चल रहा है