Estoy confundido. Traté de usar la función findAndModify de una colección en NodeJS como se indica en la documentación oficial de MongoDB:

db.collection('myColl').findAndModify(
    {
        query: {
            itemId: ObjectID(itemId),
            requesterId: requesterId
        },
        remove: 1
    },
    function(err, found){ 
        console.log(err, found);
    });

Funciona bien en la consola. Pero en NodeJS recupero un error. El mensaje de error me dijo que tengo que proporcionar al menos una actualización o eliminar. Hubo algunas preguntas similares aquí en StackOverflow, donde se mencionó una de las respuestas para usar findAndRemove en su lugar.

Bien, pero mientras buscaba una documentación para findAndRemove no encontré nada útil. Además, mi IDE (WebStorm) marca ese método como obsoleto. A través del autocompletado, también he encontrado la función findOneAndDelete que no está marcada como obsoleta y parece hacer lo que quiero, pero no puedo encontrar nada sobre esa función.

Dado que soy bastante nuevo en NodeJS y MongoDB, esto es realmente confuso y estoy muy decepcionado con esta documentación.

Mi pregunta es: ¿Cuál es el fondo? ¿Dónde puedo encontrar una documentación útil para la API de JavaScript de MongoDB o cómo usar la documentación de MongoDB correctamente? ¿Dónde puedo obtener información sobre el método mencionado anteriormente?

1
Green 10 dic. 2015 a las 14:47

3 respuestas

La mejor respuesta

Supongo que está utilizando el controlador de nodo MongoDB.

Puede encontrar la documentación de la función findAndModify, así como Insertar y actualizar funciones aquí:

https://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html

3
Nicola T. Curie 10 dic. 2015 a las 11:51

Hay muchos módulos Node.js que actúan para conectar y administrar un servidor MongoDB.

El nativo es este: https://github.com/mongodb/node-mongodb-native

Pero también puede usar la Mangosta más popular: https://github.com/Automattic/mongoose

Dijo que creo que su código está mal, debería ser:

db.collection('myColl').findAndModify({
    itemId: ObjectID(itemId),
    requesterId: requesterId
}, null, null, {
    remove: 1
},
function(err, found) {
    console.log(err, found);
});

Como se indica en el documento: findAndModify(query, sort, doc, options, callback)

3
michelem 10 dic. 2015 a las 11:53
db.collection('myColl').findAndModify(
   { itemId: ObjectID(itemId), requesterId: requesterId },
   {}, //Do an update here if you want
   { remove: true }, // Remove the doc
   function (err, doc) {
      // do things 
   }
);

https://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html#example

0
x_maras 10 dic. 2015 a las 11:59
34201082