如何使用变量字段名增加mongodb字段?

时间:2016-09-19 14:08:37

标签: javascript node.js mongodb database

所以,关于我正在尝试创建的内容的一些背景知识。我正在尝试构建一个投票应用程序,其中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变量会返回一个错误,指出找不到undefined的属性字段。变量字段包含指定需要增加1的options_counter对象的特定键的数字。我在原始文档中嵌入了options_counter。我的问题是如何设置语法,以便MongoDb可以在options_counter对象中找到要更新的特定键值对,并将该计数器递增1?

1 个答案:

答案 0 :(得分:1)

看起来“options_counter”是一个嵌入式文档,为此你的var fieldToIncrement必须类似于options_count.0。 我在你的问题中看不到这一点。

请在你定义fieldToIncrement的地方分享你的代码,现在似乎未定义,如你所提到的错误中所述:“但是,使用fieldToIncrement变量会返回一个错误,说明找不到未定义的属性字段。”