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

Perbarui dengan ekspresi alih-alih nilai

Saya baru saja menemukan ini saat mencari padanan MongoDB dari SQL seperti ini:

update t
set c1 = c2
where ...

Sergio benar bahwa Anda tidak dapat mereferensikan properti lain sebagai nilai dalam pembaruan langsung. Namun, db.c.find(...) mengembalikan kursor dan kursor tersebut memiliki forEach metode :

Jadi Anda bisa mengatakan hal-hal seperti ini:

db.QUESTIONS.find({}, {_id: true, i_up: true, i_down: true}).forEach(function(q) {
    db.QUESTIONS.update(
        { _id: q._id },
        { $set: { i_pp: q.i_up * 100 - q.i_down * 20 } }
    );
});

untuk memperbaruinya satu per satu tanpa meninggalkan MongoDB.

Jika Anda menggunakan driver untuk terhubung ke MongoDB maka harus ada beberapa cara untuk mengirim string JavaScript ke MongoDB; misalnya, dengan driver Ruby Anda akan menggunakan eval :

connection.eval(%q{
    db.QUESTIONS.find({}, {_id: true, i_up: true, i_down: true}).forEach(function(q) {
        db.QUESTIONS.update(
            { _id: q._id },
            { $set: { i_pp: q.i_up * 100 - q.i_down * 20 } }
        );
    });
})

Bahasa lain harus serupa.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB menghapus dengan sangat lambat

  2. Azure CosmosDB menggunakan Driver Mongo:Dapatkan Hitungan Tanpa mendapatkan semua dokumen berdasarkan elemen dalam sub dokumen di C#.Net

  3. mongo $sum diperparah saat melakukan $unwind dan kemudian $group di beberapa bidang

  4. Cara mengkonfigurasi port baru untuk mongodb

  5. Mengapa PyMongo 3 memberikan ServerSelectionTimeoutError?