MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Актуализиране с израз вместо стойност

Току-що попаднах на това, докато търсех еквивалента на MongoDB на SQL по следния начин:

update t
set c1 = c2
where ...

Sergio е прав, че не можете да посочите друго свойство като стойност в права актуализация. Въпреки това, db.c.find(...) връща курсор и този курсор има forEach метод :

Така че можете да кажете неща като това:

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 } }
    );
});

за да ги актуализирате един по един, без да излизате от MongoDB.

Ако използвате драйвер за свързване към MongoDB, тогава трябва да има някакъв начин да изпратите низ от JavaScript в MongoDB; например с драйвера Ruby бихте използвали 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 } }
        );
    });
})

Другите езици трябва да са подобни.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да преименувам поле за всички документи в MongoDB?

  2. Бързо или насипно вдигане в pymongo

  3. MongoDB:Как правилно да експортирам колекция от MongoDB към моя компютър?

  4. MongoDB - Предимство на използването на низ от 12 байта като уникален идентификатор вместо инкрементална стойност

  5. MongoDB $sinh