Javascript $inc仅当新元素添加到集合时
我有一个观察器,它等待对象更改,然后将该作业添加到队列中。这将在向集合中添加内容时触发Javascript $inc仅当新元素添加到集合时,javascript,mongodb,Javascript,Mongodb,我有一个观察器,它等待对象更改,然后将该作业添加到队列中。这将在向集合中添加内容时触发 this.upsert({ count: { $lt: this.config.limit } }, { $setOnInsert: { queue: [], count: 0 }, $addToSet: { queue: doc._id }, $inc: { count: 1 } // herein lie the problem. }); 然而,我面临一
this.upsert({
count: { $lt: this.config.limit }
}, {
$setOnInsert: {
queue: [],
count: 0
},
$addToSet: {
queue: doc._id
},
$inc: { count: 1 } // herein lie the problem.
});
然而,我面临一个问题,count
将在不向集合添加任何技术内容的情况下增加
只有在一次查询中将一个元素添加到集合中时,才有增加的方法吗?您可以通过使用另一个条件项对更新进行选通来检查
doc.\u id
是否不在队列
数组中
this.upsert({
count: { $lt: this.config.limit },
queue: { $ne: doc._id }
}, {
$setOnInsert: {
queue: [],
count: 0
},
$push: { // Can use $push instead of $addToSet now
queue: doc._id
},
$inc: { count: 1 }
});
基本上,它是一个DIY
$addToSet
,可以让您获得更多的控制权。这非常有用!谢谢你,做得很好!附加条件项是一个好主意。实际上,这个解决方案只有一个问题:如果我尝试推送相同的id,它将生成一个新文档。有没有办法让它只更新它的条目?