Search code examples
node.jsmongodbmongoosemongoose-schema

How to shift a particular document from one collection to another using mongoose?


I have two models - LifeMembers and AnnualMembers. I want to shift a particular document from AnnualMembers to LifeMembers. So I am using findById to query the document from AnnualMembers and then saving it to LifeMembers. But I keep getting DocumentNotFoundError while trying to save it to LifeMembers. Please help.

Here is the code :

AnnualMembers.findById(id).then(member=>{
        let life = new LifeMembers(member);
        life.save().then(member=>res.json(member));
                   .catch(err=>console.log(err));
     }).catch(err=>console.log(err));

And here is the error I keep getting :

{ DocumentNotFoundError: No document found for query "{ _id: 5dc194b3fd0be643f45c4edb }" on model "LifeMember"
    at new DocumentNotFoundError (E:\Projects\orsi\node_modules\mongoose\lib\error\notFound.js:34:11)
    at $__handleSave (E:\Projects\orsi\node_modules\mongoose\lib\model.js:371:17)
    at E:\Projects\orsi\node_modules\mongoose\lib\model.js:303:9
    at result (E:\Projects\orsi\node_modules\mongodb\lib\operations\execute_operation.js:75:17)
    at session.endSession (E:\Projects\orsi\node_modules\mongodb\lib\operations\execute_operation.js:64:11)
    at ClientSession.endSession (E:\Projects\orsi\node_modules\mongodb\lib\core\sessions.js:135:41)
    at executeCallback (E:\Projects\orsi\node_modules\mongodb\lib\operations\execute_operation.js:59:17)
    at updateCallback (E:\Projects\orsi\node_modules\mongodb\lib\operations\update_one.js:41:3)
    at updateDocuments (E:\Projects\orsi\node_modules\mongodb\lib\operations\update_one.js:24:64)
    at handleCallback (E:\Projects\orsi\node_modules\mongodb\lib\utils.js:129:55)
    at coll.s.topology.update (E:\Projects\orsi\node_modules\mongodb\lib\operations\common_functions.js:375:5)
    at handler (E:\Projects\orsi\node_modules\mongodb\lib\core\sdam\topology.js:1000:24)
    at wireProtocol.(anonymous function) (E:\Projects\orsi\node_modules\mongodb\lib\core\sdam\server.js:457:5)
    at E:\Projects\orsi\node_modules\mongodb\lib\core\connection\pool.js:408:18
    at process._tickCallback (internal/process/next_tick.js:61:11)
  message:
   'No document found for query "{ _id: 5dc194b3fd0be643f45c4edb }" on model "LifeMember"',
  name: 'DocumentNotFoundError',
  result:
   CommandResult {
     result:
      { n: 0,
        nModified: 0,
        opTime: [Object],
        electionId: 7fffffff0000000000000004,
        ok: 1,
        operationTime: [Timestamp],
        '$clusterTime': [Object] },
     connection:
      Connection {
        domain: null,
        _events: [Object],
        _eventsCount: 5,
        _maxListeners: undefined,
        id: 1,
        options: [Object],
        logger: [Logger],
        bson: BSON {},
        tag: undefined,
        maxBsonMessageSize: 67108864,
        port: 27017,
        host: 'cluster0-shard-00-01-pcn5n.gcp.mongodb.net',
        socketTimeout: 360000,
        keepAlive: true,
        keepAliveInitialDelay: 300000,
        connectionTimeout: 30000,
        responseOptions: [Object],
        flushing: false,
        queue: [],
        writeStream: null,
        destroyed: false,
        hashedName: '2d8e7dfad852d7e83e92f54b67929766ab731839',
        workItems: [],
        socket: [TLSSocket],
        buffer: null,
        sizeOfMessage: 0,
        bytesRead: 0,
        stubBuffer: null,
        ismaster: [Object],
        lastIsMasterMS: 801 },
     message:
      BinMsg {
        parsed: true,
        raw:
         <Buffer f5 00 00 00 52 ed 45 01 0b 00 00 00 dd 07 00 00 00 00 00 00 00 e0 00 00 00 10 6e 00 00 00 00 00 10 6e 4d 6f 64 69 66 69 65 64 00 00 00 00 00 03 6f 70 ... >,
        data:
         <Buffer 00 00 00 00 00 e0 00 00 00 10 6e 00 00 00 00 00 10 6e 4d 6f 64 69 66 69 65 64 00 00 00 00 00 03 6f 70 54 69 6d 65 00 1c 00 00 00 11 74 73 00 01 00 00 ... >,
        bson: BSON {},
        opts: [Object],
        length: 245,
        requestId: 21359954,
        responseTo: 11,
        opCode: 2013,
        fromCompressed: undefined,
        responseFlags: 0,
        checksumPresent: false,
        moreToCome: false,
        exhaustAllowed: false,
        promoteLongs: true,
        promoteValues: true,
        promoteBuffers: false,
        documents: [Array],
        index: 229,
        hashedName: '2d8e7dfad852d7e83e92f54b67929766ab731839' },
     modifiedCount: 0,
     upsertedId: null,
     upsertedCount: 0,
     matchedCount: 0,
     '$where': { _id: 5dc194b3fd0be643f45c4edb } },
  numAffected: 0,
  filter: { _id: 5dc194b3fd0be643f45c4edb },
  query: { _id: 5dc194b3fd0be643f45c4edb } }

Solution

  • Problem solved. Used the lean() method while querying using findById() as : AnnualMembers.findById(id).lean().then(member=>{/*...*/})