我有一个等待对象更改的观察者,然后将该作业添加到队列中。只要有东西被添加到集合中,就会触发。
this.upsert({
count: { $lt: this.config.limit }
}, {
$setOnInsert: {
queue: [],
count: 0
},
$addToSet: {
queue: doc._id
},
$inc: { count: 1 } // herein lie the problem.
});
但是,我遇到的问题是,count
会在没有任何技术上添加的情况下增加{<1}}。
只有在单个查询中将元素添加到集合中时才有增量方法吗?
答案 0 :(得分:3)
您可以使用其他条件字词来更新您的更新,以检查doc._id
数组中是否还有queue
。
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
,可以让您获得更多控制权。