我正在尝试增加一个元素的值,这是我的数组对象
"options": [
{
"key": "banana",
"votes": 0
},
{
"key": "apple",
"votes": 0
},
{
"key": "mango",
"votes": 0
},
{
"key": "grapes",
"votes": 0
}
]
我正在尝试增加所选的投票值
item
同时匹配该数据的 id
db().collection('polls').update(
{ _id: id, "options.key": item },
{$set: { $inc: { "options.$.votes" : 1 } }})
但它没有用...这里的 db()
是一个返回数据库的函数。我没有收到任何错误。
这里是完整的数据
{
"_id": {
"$oid": "5aae26203ab1cc0f15e43dc6"
},
"author": "me",
"title": "fruits you love the most",
"options": [
{
"key": "banana",
"votes": 0
},
{
"key": "apple",
"votes": 0
},
{
"key": "mango",
"votes": 0
},
{
"key": "grapes",
"votes": 0
}
]
}
最佳答案
删除 $set
并尝试。它应该工作。此外,db
应该像 db
而不是 db()
那样在没有括号的情况下使用:
db.collection('polls').update(
{ _id: id, "options.key": item },
{ $inc: { "options.$.votes" : 1 } }
)
如果您直接在 mongodb shell 中运行此查询,那么您需要在查询中指定 _id: ObjectId(id)
,这样您的查询将是:
var id = '5aaf66812b0e3813178a8a14'
db.collection('polls').update(
{ _id: ObjectId(id), "options.key": item },
{ $inc: { "options.$.votes" : 1 } }
)
关于node.js - 增加数组对象 mongodb-node 中元素的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49358925/