我有一個標籤一個蒙戈收集和數組中的所有項目時,用戶輸入的標籤我想做以下的數組:MongoDB中是否存在和更新其他插入
如果陣列中的一個標籤存在,更新計數 如果陣列中的一個標籤不存在,插入帶的0
我現在有一個計數:
QuestionTags.update({'tag': {$in: tagArray}}, {$inc : {'count': +1} }, { upsert: true });
QuestionTags
是爲DB收集貓鼬架構。
這似乎沒有工作。我輸入了一個新的標籤數組,並且他們沒有被添加,並且現有的標籤沒有增加。
有沒有辦法處理這個問題,而不必循環通過tagArray
併爲數組中的每個項目進行數據庫調用?
UPDATE: 改變了我的代碼,這
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);
});
然而,newTags
爲空。 QuestionTags集合目前是空的,因此它不應該爲空。
什麼是你的tagArray?簡單字符串?我只是做了一個測試,並增加了更新查詢。對於插入,您的更新對象(update的第二個參數)中沒有'$ set:{tag:'newTag'}',所以upsert實際上並沒有插入任何東西。 – Komo
@Komo是它的簡單字符串[「Java」,「JavaScript」,「敏捷」]。如果一切正常,您可以使用正確的方式發佈解決方案 – erichardson30
@Komo做了您發佈的解決方案無效嗎? – erichardson30