Two query operations on a Collection

Asked

Viewed 34 times

0

I’m new to Node JS and mongoDB and I’m trying to run a find and then a update, but it doesn’t seem to be possible. Someone has an idea?

function CarrinhoDAO(conexao) {
    this._conexao = conexao();
}

CarrinhoDAO.prototype.retira = function(res, email_cliente, id_produto, retira) {
    this._conexao.open(function(erro, mongocliente) {
        mongocliente.collection("carrinhos", function(erro, collection) {
            collection.find({
                $and: [
                    { cliente: email_cliente },
                    { estado: "aberto" },
                    { lista_compras: { $size: 1 } }
                ]
            }).toArray(function(erro, qtd) {
                if (qtd.length == 1){
                     collection.update({
                    $and: [
                        { cliente: email_cliente },
                        { estado: "aberto" }
                    ]
                }, {
                    $pull: { lista_compras: { id_produto_carrinho: objectId(id_produto) } },
                    $unset: { supermercado: 1 }
                }, function(erro, records) {
                    if (erro) {
                        res.end(erro);
                    } else {
                        res.json(records);
                    }
                });
                }
            });
        }
}

The result to be obtained from find depends on whether or not the update.

1 answer

-1

Voce can use : db.collection.findOneAndUpdate

retira.findOneAndUpdate({age: 17}, {$set:{name:"Naomi"}}, 
{new: true}, function(err, doc){
if(err){
    console.log("Something wrong when updating data!");
}

console.log(doc);});

Browser other questions tagged

You are not signed in. Login or sign up in order to post.