それで、私が作成しようとしていることについての少しの背景。私は投票アプリケーションを構築しようとしています。ここでは、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]はオプションを表し、コロンの後の数字はそれぞれのカウンタを表します。必要なカウンタを更新するMy機能はfieldToIncrement変数がそれは未定義のプロパティフィールドを見つけることができないというエラーを返す使用して、しかし
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);
}
});
下に表示されます。可変フィールドには、1だけインクリメントする必要があるoptions_counterオブジェクトの特定のキーを指定する番号が含まれています。元のドキュメント内にoptions_counterを埋め込んでいます。私の質問は、MongoDbがoptions_counterオブジェクト内の特定のキー値のペアを見つけて更新するように構文を設定し、そのカウンタを1ずつインクリメントする方法です。
いくつかの問題がありますが、その値を表示するために 'console.log(fieldToIncrement)'を呼び出すことから始めます。それはおそらくあなたが思うものではないでしょう。 – JohnnyHK
したがって、上記の構文を使用してfieldToIncrementを定義すると、定義されていないオブジェクトのプロパティにアクセスしようとしているため、エラーが返されます。私はoptions_counter.fieldだけに変更しようとしましたが、options_counterはデータベース外ではアクセスできないため、エラーも返されます。あなたが見ている他のエラーは何ですか? –