1

私はmongodb、node.js、およびsocket.ioを使用しており、データベースへのアクセス数を減らそうとしています。行を更新する必要があります。更新された行を返した後、これが私が行う方法です:

db.collection('users').update({_id:targetID}, {$set: { 'property': 'value' }}, {safe:true}, function(err, result) {
    db.collection('users').find({_id:targetID}).toArray(function(error, results){
        //a socket.io resend the content
    });
});

うまくいきますが、ここで無駄な一歩を踏み出しているように本当に落ちました。更新関数のコールバックはブール値のようです。

ところで、これよりも優れたドキュメントがあります: http://docs.mongodb.org/manual/applications/update/ ? プロパティとメソッドのリストを見つけたいと思います。{safe:true}たとえば。それなしでは機能しないようですが、参照で見つけることができません。

たぶん私は完全に間違っており、これは私がすべき方法ではありません。もっと良いアイデアがあれば... :)

4

1 に答える 1

5

findAndModifyこれを効率的に行うために使用できます。

db.collection('users').findAndModify(
    {_id: targetID}, [], 
    {$set: { 'property': 'value' }}, 
    {new: true}, // Return the updated doc rather than the original
    function(err, result) {
        // result contains the updated document
    }
);
于 2012-12-27T17:24:57.717 に答える