所以,我想創建一個小背景。我正在嘗試構建一個投票應用程序,其中MongoDb數據庫存儲了每個選項的選項和計數器,以檢查人們爲每個選項投了多少次票。我已經實現的數據結構如下所示。如何使用變量字段名稱來增加mongodb字段?
_id:"57dfecfa3832360f46e183c2"
options:"iea, aoegboae, aoeugoa, ougr, gege"
options_counter:Object
0:0
1:0
2:0
3:0
4:0
__proto__:Object
title:"hr"
每個這些數字[0,1,2,3,4]的代表一個選項,數結腸表示每個計數器之後。我的功能更新所需的反如下所示
var fieldToIncrement = db.collection('polls').options_counter.field;
db.collection('polls').findOneAndUpdate(
{_id: user_id},
{$inc: {fieldToIncrement: 1}},
{upsert:false},
{returnNewDocument: true}
).toArray(function(err, doc){
if(err){
throw new Error(err);
}if(doc){
console.log(doc);
//callback(null, doc);
}
});
然而,使用fieldToIncrement變量返回一個錯誤,指出無法找到的未定義的屬性字段。變量字段包含指定需要遞增1的options_counter對象的特定鍵的數字。我已將options_counter嵌入原始文檔中。我的問題是如何設置語法,以便MongoDb可以找到options_counter對象內的特定鍵值對來更新,並將該計數器增加1?
有幾個問題,但從調用'console.log(fieldToIncrement)'開始顯示其值。這可能不是你的想法。 – JohnnyHK
因此,當我使用上述語法來定義fieldToIncrement時,它會返回一個錯誤,因爲我顯然試圖訪問未定義對象的屬性。我試着將它改爲options_counter.field,但也返回一個錯誤,因爲options_counter不能在數據庫之外訪問。你看到的其他錯誤是什麼? –