MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Perbarui objek di dalam array di mongoDb menggunakan luwak

Objek (dokumen) di dalam larik dalam koleksi MongoDB disebut - subdokumen

Dalam hal ini, untuk memperbarui subdokumen tertentu dengan _id-nya sendiri , Anda dapat menggunakan Mongoose findOneAndUpdate metode:

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

})

pertama Anda perlu menemukan dokumen dalam koleksi dengan:

"_id": "59b7e839200a5c00ee2d2851"

kemudian temukan subdokumen dengan _id menggunakan parameter kedua:

"playesList._id": "59b2a4f749fee40959e556d3"

dan ketika Anda menemukan subdokumen yang ingin Anda perbarui, gunakan $set operator untuk menetapkan nilai baru ke name properti dari subdokumen yang ditemukan:

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

Perhatikan bahwa findOneAndUpdate mengembalikan status dokumen yang diperbarui sebelumnya.

Contoh kerja:

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. Bagaimana saya bisa menyimpan waktu dalam sehari di MongoDB? Sebagai tali? Berikan tahun/bulan/hari sewenang-wenang?

  2. Bagaimana cara menghitung item tanggal yang berbeda dalam bidang cap waktu di Mongoose/NodeJS?

  3. MongoDB:Bagaimana cara memperbarui satu subelemen dalam array, yang direferensikan oleh indeks di dalam array?

  4. Mongo mencoba terhubung secara otomatis ke port 27017 (localhost)

  5. 4 Cara Memperbarui Dokumen di MongoDB