cari

Rumah  >  Soal Jawab  >  teks badan

node.js - Bagaimana untuk mengemas kini kumpulan satu set data dalam mongo dan melakukan operasi sisipan apabila data dalam tatasusunan tidak wujud?

Sebagai contoh, saya mempunyai jadual tag dalam mongo, dan model data adalah seperti berikut

    {
        name: String,
        hot: {
            type: Number,
            default: 0
        },
        create_at: {
            type: Date,
            default: Date.now
        }
    }

Kini saya mempunyai pelbagai nama teg, seperti ['mongoDB', 'node.js', 'mysql'],
Saya ingin mengemas kini populariti dalam kelompok, dan jika didapati tiada teg sedemikian, masukkannya, laksanakan sesuatu seperti

mongo.tags.update({
    name:{
        $in:['mongoDB','node.js','mysql']
        }
},{
    $inc:{
        hot:1
    }
},{
    upsert: true,
    multi:true
})

Operasi sedemikian, tetapi sekarang apabila saya melaksanakan arahan ini, data kosong ditambah

Cara saya melaksanakannya sekarang ialah melakukan pertanyaan dahulu, dan mengemas kini yang boleh ditanya, dan memasukkan yang tidak boleh ditanya Operasi, tetapi operasi sedemikian memerlukan melintasi tatasusunan tag beberapa kali dari kod, dan prestasinya tidak baik.

淡淡烟草味淡淡烟草味2734 hari yang lalu989

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-05-24 11:37:41

    1 Penyata operasi kemas kini anda OK

    2. Apa yang anda katakan tentang menambah data kosong adalah kerana tiada dokumen yang memenuhi syarat ditemui, dan upsert telah ditetapkan kepada benar, jadi dokumen yang mengandungi feild hot telah dimasukkan.

    Anda juga boleh menyemak status dokumen koleksi anda dan cuba lagi. Tiada masalah ditemui dalam operasi kemas kini anda.

    Untuk rujukan.

    Suka MongoDB! Selamat mencuba!


    Persidangan Kumpulan Pengguna Komuniti Cina MongoDB Beijing 2017 akan datang tidak lama lagi! Imbas kod QR untuk mendaftar!

    balas
    0
  • 某草草

    某草草2017-05-24 11:37:41

    Sepatutnya boleh menggunakan upsert dalam mongodb
    upsert({},{},true) true bermaksud tulis jika tiada, dan kemas kini jika ada
    Anda boleh merujuk kepada forum sokongan rasmi:
    http:// forum.foxera.com/ mongo...

    balas
    0
  • Batalbalas