MongoDB не увеличивает числа

#javascript #node.js #mongodb #integer #increment

Вопрос:

мне нужно увеличить число в MongoBD.
Я использую этот код:

         let users = mongoose.db("wumpusCave").collection("users")

        console.log(data)
        let user = await users.findOne({"token": data.user})
        let bots = mongoose.db("wumpusCave").collection("bots")
        let bot = await bots.findOne({"id":data.bot})


        if(user != null amp;amp; user.likedBots != null amp;amp; bot != null) {
            users.findOneAndUpdate({"token": data.user}, {$push: {"likedBots": data.id}})
            console.log("bot a cui hai lasciato like aggiunto!!")
            bots.findOneAndUpdate(await {"id":data.bot}, {$inc: {"like":  1}})
            console.log("like aggiunto!")          
        }
    })
 

Функция push работает, но функция приращения отсутствует.
Это не дает никаких ошибок.

Это запись в базе данных:

 {
    "_id": {
        "$oid": "60b62e0679182f0004714aac"
    },
    "id": "723877094920290305",
    "name": "rockpaperscissors",
    "description": "Gioca a sasso carta e forbici son i tuoi amici!",
    "invite": "https://discord.com/oauth2/authorize?client_id=723877094920290305amp;scope=botamp;permissions=67374144",
    "support_server": "",
    "developer": "465905397874688000",
    "avatar": "https://cdn.discordapp.com/app-icons/723877094920290305/2a580399fd50daa5b2c08b56de089c8e.png?size=256",
    "other_developers": "",
    "like": 0,
    "dislike": 0
}
 

Мне нужно обновить запись «нравится» из значения «идентификатор».
Как я могу это сделать?
Спасибо за совет и извините за плохой английский!

Комментарии:

1. Я думаю, это потому, что ожидание в этой строке: bots.findOneAndUpdate(await {"id":data.bot}, {$inc: {"like": -1}}) избавьтесь от него и попробуйте await bots.findOneAndUpdate( {"id":data.bot}, {$inc: {"like": -1}}) вместо этого

2. @HamzaBoukhtam это не работает

3. ах! Я только что заметил, что поле идентификатора должно быть _id, а не id, попробуйте это await bots.findOneAndUpdate( {"_id":data.bot}, {$inc: {"like": -1}})

4. @BlackdestinyXX нам нужна запись или схема в вашей базе данных, которую вы пытаетесь обновить, вы только что показали нам код, и, не зная, какими типами/свойствами обладает объект, на данный момент можно только догадываться.

5. @BlackdestinyXX Поскольку идентификатор является строковым типом, а $inc работает только с числами, у вас несоответствие ввода. Приведите свое поле идентификатора в int, а затем повторите попытку с помощью $inc (вы можете привести в mongo 4.0, используя $toInt: «$value»). docs.mongodb.com/manual/reference/operator/aggregation/toInt

Ответ №1:

Я почти уверен, что вам не следует цитировать имена ваших свойств для объекта

 if(user != null amp;amp; user.likedBots != null amp;amp; bot != null) {
    users.findOneAndUpdate({token: data.user}, {$push: {likedBots: data.id}})
    console.log("bot a cui hai lasciato like aggiunto!!")
    bots.findOneAndUpdate(await {id:data.bot}, {$inc: {like: -1}})
    console.log("like aggiunto!")          
}
 

})

Комментарии:

1. можем ли мы увидеть запись, уже сохраненную в вашей базе данных, которую вы пытаетесь обновить?