所以,关于我正在尝试创建的内容的一些背景知识。我正在尝试构建一个投票应用程序,其中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?
答案 0 :(得分:1)
看起来“options_counter”是一个嵌入式文档,为此你的var fieldToIncrement必须类似于options_count.0。 我在你的问题中看不到这一点。
请在你定义fieldToIncrement的地方分享你的代码,现在似乎未定义,如你所提到的错误中所述:“但是,使用fieldToIncrement变量会返回一个错误,说明找不到未定义的属性字段。”