を挿入する場合、私は、タグのMongoのコレクションを持っており、ユーザーがタグの配列を入力したときに、私は次の操作を実行したい参照してください、MongoDBのは、アレイ内のすべての項目が存在し、他の更新が
配列のタグが存在する場合配列内のタグが存在しない場合は、カウント を更新し、私が現在持っている0
のカウントを挿入します。
QuestionTags.update({'tag': {$in: tagArray}}, {$inc : {'count': +1} }, { upsert: true });
QuestionTags
はデシベルコレクションのマングーススキーマです。
これは機能していないようです。私は新しいタグの配列を入力し、それらは追加されておらず、既存のタグはインクリメントされていません。
tagArray
をループせずに配列を処理する方法はありますか?配列内の各項目に対してdbコールを行いますか?
UPDATE: はnewTags
がnullの場合、しかしこの
QuestionTags.update({'tag': {$in: req.body.tags}}, {$inc : {'count': +1} }, { upsert: true, multi: true });
QuestionTags.find({'tag' :{$nin: req.body.tags}}, function(err, newTags) {
console.log("New Tags :" + newTags);
var tagArray = [];
newTags.forEach(function(tag){
var tagObj = {
tag: tag,
count: 1
}
tagArray.push(tagObj);
});
QuestionTags.collection.insert(tagArray);
});
に私のコードを変更しました。 QuestionTagsコレクションは現在空ですので、nullにすることはできません。
あなたtagArrayには何ですか?単純な文字列ですか?私はちょうどテストをして、あなたの更新クエリで作業を増やしています。挿入するには、更新オブジェクト(更新の2番目のパラメータ)に '$ set:{tag: 'newTag'}'を持たないので、upsertは実際に何も挿入していません。 – Komo
@Komo yeahの単純な文字列["Java"、 "JavaScript"、 "Agile"]。それ以外のものがすべて動作している場合は、正しい方法で解決策を投稿することができます – erichardson30
@Komoはあなたが投稿した解決策を働かせませんでしたか? – erichardson30