복붙노트

[MONGODB] 업데이트 및 반환 문서에서 MongoDB를

MONGODB

업데이트 및 반환 문서에서 MongoDB를

나는 업데이트 된 문서를 얻을합니다. 이건 내 원래의 코드이며 성공적으로 업데이트하지만 문서를 반환하지 않습니다.

collection.update({ "code": req.body.code },{$set:  req.body.updatedFields}, function(err, results) {
                        res.send({error: err, affected: results});
                        db.close();
                    });

"제공되는 콜백없이 writeConcern를 사용할 수 없습니다"나는 toArray 기능을 사용하지만,이 오류를했다 :

collection.update({ "code": req.body.code },{$set:  req.body.updatedFields}).toArray( function(err, results) {
                    res.send({error: err, affected: results});
                    db.close();
                });

어떤 아이디어?

해결법

  1. ==============================

    1.collection.update는 ()는 자신의 콜백에 영향을받은 문서의 수를보고합니다.

    collection.update는 ()는 자신의 콜백에 영향을받은 문서의 수를보고합니다.

    수정하는 동안 문서를 검색하려면, 대신) collection.findOneAndUpdate을 (사용할 수 있습니다 (이전 .findAndModify ()).

    collection.findOneAndUpdate(
        { "code": req.body.code },
        { $set: req.body.updatedFields },
        { returnOriginal: false },
        function (err, documents) {
            res.send({ error: err, affected: documents });
            db.close();
        }
    );
    

    업데이트 : 다음 MongoDB를 사용하기를 .findOneAndUpdate을 실행 {returnNewDocument : TRUE} 또는 {새로운 : TRUE} 사용할 수 있습니다 몽구스를 사용하는 경우. 위는 Node.js를 드라이버입니다.

  2. ==============================

    2.이 솔루션은 설정하는 것입니다 : {returnOriginal : 거짓}.

    이 솔루션은 설정하는 것입니다 : {returnOriginal : 거짓}.

    collection.findOneAndUpdate(
            whereObj,
            updateObj,
            {returnOriginal: false});
    
  3. ==============================

    3.많은 업데이트하고 내가 해결했다, 그래서 문서에 수정 된 레코드를 반환 할 수있는 방법을 찾을 수 없습니다.

    많은 업데이트하고 내가 해결했다, 그래서 문서에 수정 된 레코드를 반환 할 수있는 방법을 찾을 수 없습니다.

    나는이 방법, 당신은 문서가 수정되거나 이미 사용하고 있는지 값을 한 경우 말할 수 없을 것입니다 아래로 찾을 수있는 하나 이상의 오류 :

    function findAndUpdateMany(filter, updateOptions) {
      return collection.find(filter).project({_id: 1}).toArray()
        .then(function(matchingIds) {
          filter = {_id: {$in: matchingIds}}
          return collection.updateMany(filter, updateOptions)
        }).then(function() {
          return collection.find(filter).toArray()
        })
    }
    
  4. ==============================

    4.WriteResult 객체를 체크 아웃 :

    WriteResult 객체를 체크 아웃 :

    http://docs.mongodb.org/manual/reference/method/db.collection.update/#writeresults-update

    WriteResult result = collection.update({ "code": req.body.code },{$set:  req.body.updatedFields}, function(err, results) {
                        res.send({error: err, affected: results});
                        db.close();
                    });
    

    뭔가를해야 결과 :

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    

    업데이트 된 결과를 원하는 경우, 기본 키와 다른 쿼리를 수행합니다.

  5. from https://stackoverflow.com/questions/24747189/update-and-return-document-in-mongodb by cc-by-sa and MIT license