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

How to increment mongodb fields using variable field name?

本文关键字:字段 增加 mongodb 变量 何使用      更新时间:2023-09-26

关于我要创建的东西的一些背景知识。我试图建立一个投票的应用程序,其中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?

它看起来像"options_counter"是一个嵌入式文档,为此你的var fieldToIncrement必须是类似options_count.0的东西。从你的问题中我看不出这一点。

请分享你的代码,你定义fieldToIncrement,现在似乎是未定义的,也在你提到的错误中指出:"然而,使用fieldToIncrement变量返回一个错误,说不能找到未定义的属性字段。"