我正在尝试增加元素的值,这是我的数组对象
"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()
这里是一个返回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
}
]
}
答案 0 :(得分:2)
删除$set
然后尝试。它应该工作。此外,db
应该使用db
而不是db()
,而不是db.collection('polls').update(
{ _id: id, "options.key": item },
{ $inc: { "options.$.votes" : 1 } }
)
:
_id: ObjectId(id)
如果您直接在mongodb shell中运行此查询,则需要在查询中指定var id = '5aaf66812b0e3813178a8a14'
db.collection('polls').update(
{ _id: ObjectId(id), "options.key": item },
{ $inc: { "options.$.votes" : 1 } }
)
,以便查询:
npm i -S express
答案 1 :(得分:0)
你做的事情都是正确的但只有一个错误 $ inc 不应该在 $ set 里面。
以下将满足您的要求。
db.collection.update( {"options.key": "banana" }, { $inc: { "options.$.votes" : 1 } } )