#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. можем ли мы увидеть запись, уже сохраненную в вашей базе данных, которую вы пытаетесь обновить?